我有以下两个类;使用基于子项目的Lambda/Linq筛选器父集合
public class Order
{
public int Id {get;set;}
public List<Item> Items {get;set;}
public DateTime CreatedOn {get;set;}
}
public class Item
{
public int Code {get;set;}
public int SupplierId {get;set;}
public string Name {get;set;}
public decimal Price {get;set;}
}
我有订单清单,每个订单包含许多不同的项目。我想筛选订单清单,以便我可以实现以下目标;
- 返回所有订单,其中项目列表中至少1项有供应商ID = 1
- 不返回任何订单,如果没有项目匹配供应商ID = 1
UPDATE
如何扩展结果以便我只返回订单和具有SupplierId = 1的项目
这是wh在我尝试到目前为止,现在工作。但我怎样才能进一步压缩它;
List<Order> OrderList = new List<Order>();
foreach(Order order in Order.Get(1))
{
Order tmpOrder = order;
tmpOrder.Items = order.Items.Where(x => x.SupplierId == 1).ToList();
if (tmpOrder.Items.Count > 0)
OrderList.Add(tmpOrder);
}
到目前为止您尝试过哪些方面,以及您尝试解决方案时遇到了哪些问题?您的需求中的每一步都几乎准确地逐个映射到LINQ操作。 – Servy 2015-03-31 15:48:30