我有一个包含不同列的列表,Name和Bitrate。
public class VideoQuality
{
public string Name { get; set; }
public string Bitrate { get; set; }
}
public List<VideoQuality> quality = new List<VideoQuality>()
{
new VideoQuality() { Name = "High", Bitrate = "5000K" },
new VideoQuality() { Name = "Medium", Bitrate = "2500K" },
new VideoQuality() { Name = "Low", Bitrate = "500K" },
};如何从列表中选择Bitrate是High
类似于:
if (selectedQuality == "High")
{
// Select High Bitrate from List
string vBitrate = quality.Select(x => x.Bitrate)
.Where(Name = "High");
}vBitrate应该等于5000K。
发布于 2018-07-17 09:13:52
首先要过滤,然后选择:
var result = quality.Where(x => x.Name == "High")
.Select(x => x.Bitrate); //IEnumerable<string>在查询语法中:
var result = from x in quality
where x.Name == "High"
select x.Bitrate; //IEnumerable<string>注意,在任何情况下,如果结果是IEnumerable<string>而不是单个项的话。如果您只想要一个项目,那么使用FirstOrDefault/First/Single,SingleOrDefault
var result = quality.FirstOrDefault(x => x.Name == "High")?.Bitrate; //string有关不同方法之间的差异,请参阅文档和https://stackoverflow.com/q/1745691/6400526。
发布于 2018-07-17 09:15:19
如果您期望返回最多一个值,我建议使用FirstOrDefault
string vBitrate = quality
.FirstOrDefault(item => item.Name == "High")
?.BitRate;https://stackoverflow.com/questions/51377432
复制相似问题