C# 从名称匹配的列表列中选择值
我有一个不同列的列表,C# 从名称匹配的列表列中选择值,c#,list,linq,C#,List,Linq,我有一个不同列的列表,名称和比特率 public class VideoQuality { public string Name { get; set; } public string Bitrate { get; set; } } public List<VideoQuality> quality = new List<VideoQuality>() { new VideoQuality() { Name = "High", Bitrat
名称
和比特率
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" },
};
vBitrate
应等于5000K
您首先要筛选,然后选择:
var result = quality.Where(x => x.Name == "High")
.Select(x => x.Bitrate); //IEnumerable<string>
有关不同方法之间的差异,请参阅文档和。首先要筛选,然后选择:
var result = quality.Where(x => x.Name == "High")
.Select(x => x.Bitrate); //IEnumerable<string>
有关不同方法之间的差异,请参阅文档和。如果您希望最多返回一个值,我建议FirstOrDefault
:
var result = quality.FirstOrDefault(x => x.Name == "High")?.Bitrate; //string
string vBitrate = quality
.FirstOrDefault(item => item.Name == "High")
?.BitRate;
如果您希望最多返回一个值,我建议FirstOrDefault
:
var result = quality.FirstOrDefault(x => x.Name == "High")?.Bitrate; //string
string vBitrate = quality
.FirstOrDefault(item => item.Name == "High")
?.BitRate;
回答得很好。我认为它可以在更多的细节上受益,这些细节是关于
Single()
、SingleOrDefault()
、First()
和FirstOrDefault()之间的区别。尽管这不是问题的一部分,但这一点经常被忽视。@Noceo-:)yap是值得补充的伟大答案。我认为它可以在更多的细节上受益,这些细节是关于Single()
、SingleOrDefault()
、First()
和FirstOrDefault()之间的区别。尽管这不是问题的一部分,但这一点经常被忽视。@Noceo-:)yap值得补充