比较linq中的两个列表

时间:2016-05-25 07:37:47

标签: c# linq list

我有两个列表:订单和商品,我需要按名称比较它们然后查看订单列表是否将bool设置为false,如果它满足条件它复制其字符串消息然后添加到新列表中我即使如何比较列表也没有什么特别的想法,所以任何帮助将不胜感激 功能:

 private static void FailedItemsList(List<Item> failed, List<Order> orders, List<Item> items)
{
    foreach(var order in orders)
    {
        foreach(var item in items)
        {
            if(order.Equals(item))
            {
                if(order.Fulfilled == false)
                {
                    item.FailMessage = order.FailMessage;
                    failed.Add(item);
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

一般情况下,我会返回这个&#34;失败列表&#34;从方法而不是传递给它。您可以使用LINQ来简化此任务:

Item

由于OrderEquals是不同的类,我已删除Name项检查,并根据需要将其替换为Item.FailMessage属性上的联接。由于LINQ不应该引起副作用,我还没有修改查询中的foreach属性,而是在foreach - 循环中。由于LINQ的延迟执行(查询在font=执行),效率并不低。

答案 1 :(得分:0)

var v = from x in orders
        where x.Fulfilled == false
        join item in items on order.Name equals item.Name
        select x.FailMessage;

foreach (int i in v)
    failed.Add(i);