【问题标题】:linq foreach item in list with more than one matching elementlinq foreach 列表中具有多个匹配元素的项目
【发布时间】:2013-12-12 21:01:54
【问题描述】:

我有一份汽车清单。每辆车都有许多门。每扇门都有颜色。我想遍历列表并仅选择那些具有多个匹配颜色的门的汽车。

我已经尝试过这样的事情,但它并没有像我期望的那样工作:

foreach (Car car in cars.Where(c=>c.doors.Select(d=>d.color = "Blue").Count() > 1))
{
     // Do something     
}

你能帮我理解我做错了什么吗?

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    您需要将 Select 替换为 Where 并传递一个谓词:

    foreach (Car car in cars.Where(c=>c.doors.Where(d=>d.color == "Blue").Count() > 1))
    

    为了缩短:

    foreach (Car car in cars.Where(c=>c.doors.Count(d=>d.color == "Blue") > 1))
    

    【讨论】:

      【解决方案2】:

      您使用c.color = "blue",这是赋值。 您应该使用c.color == "blue"color.Equals("blue") 进行比较。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-17
        • 1970-01-01
        • 1970-01-01
        • 2015-07-13
        • 1970-01-01
        • 2011-08-09
        相关资源
        最近更新 更多