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值得补充