我有以下兩個類;使用基於子項目的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