C# 使用Linq选择列表外的项目

C# 使用Linq选择列表外的项目,c#,linq,C#,Linq,我有一张这样的清单 { "Nutrients": [{ "vitamin": "vitamin C", "potassium": "195mg", "sodium": "2mg", "cholesterol": "", "display_name": "Apple" }, { "vitamin": "vitami

我有一张这样的清单

     {
        "Nutrients": [{
            "vitamin": "vitamin C",
            "potassium": "195mg",
            "sodium": "2mg",
            "cholesterol": "",
            "display_name": "Apple"
        }, {
            "vitamin": "vitamin B",
            "potassium": "176mg",
            "sodium": "2mg",
            "cholesterol": "",
            "display_name": "Grape"
        }],
        "General_name": "Fruits",
        "country_of_origin": "France"


     }


     {
        "Nutrients": [{
            "vitamin": "vitamin B",
            "potassium": "196mg",
            "sodium": "115mg",
            "cholesterol": "123mg",
            "display_name": "Chicken"

        }, {
            "vitamin": "vitamin B",
            "potassium": "360mg",
            "sodium": "53mg",
            "cholesterol": "68mg",
            "display_name": "Chicken"
        }],
        "General_name": "Meat",
        "country_of_origin": "Denmark"

     }
我需要找到胆固醇值为空字符串的项目的通用名称

我试着用linq lambda表达式作为

var elements=items.SelectMany(c =>c.Nutrients)
    .Where(a => !string.IsNullOrEmpty(a.cholesterol))
    .ToList();
我的问题是如何从这个条件中获得通用名称

var elements = items.Where(x => x.Nutrients.Any(a => !string.IsNullOrEmpty(a.cholesterol)))
   .Select(x => x.GeneralName)
   .ToList();
这将获得包含营养素集合中包含胆固醇非空值的所有GeneralName值的列表。这就是你要找的吗


编辑:


有没有一种方法可以让我同时获得这些项目的显示名称


是的,我忘了bool选项。Thanks@Mithun-很高兴它对你有用。一旦15分钟期满,请考虑接受答案(见)。我也有办法得到这些项目的显示名称吗?
var elements = items.Where(x => x.Nutrients.Any(a => !string.IsNullOrEmpty(a.Cholesterol)))
    .Select(x => new {x.GeneralName, DisplayNames = x.Nutrients.Where(a => !string.IsNullOrEmpty(a.Cholesterol)).Select(y => y.DisplayName).ToList()})
    .ToList();