[英]LINQ using dictionary object with GroupBy
我在LINQ Group By子句中使用Dictionary對象。
只要我在結果中沒有重復的項目名稱 ,它就可以正常工作。
但是,當GroupBy查詢遇到重復的項目名稱時,它將失敗。
我不確定我是否在GroupBy子句中正確使用Dictionary對象? 請指教。
這是我的模特
public class Item
{
public string CustomerName { get; set; }
public Dictionary<string, float?> ItemCost { get; set; }
public float? Cost{ get; set; }
public float? TotalCost{ get; set; }
}
以下是我的選擇查詢(LINQ)和GroupBy
var result = myFilteredQuery
.Select(x => new
{
ItemName = x.Item.Name,
Cost= x.Item.Cost,
CustomerName = x.Item.Customer.Name,
}).ToList();
以下是我的GroupBy查詢。
return result .GroupBy(x => new { x.CustomerName})
.Select(x => new CostByItem
{
CustomerName = x.Key.CustomerName,
LineItem = x.ToDictionary(y => y.ItemName, y => y.Cost),
TotalCost= x.Sum(y => y.Cost)
}).ToList();
ps我正在嘗試發送創建數據結構“按客戶分組”,然后在每個客戶詞典對象的“項目成本”(項目名稱,“項目成本”)和該客戶的總成本下發送。
如果我的理解正確,您想按客戶對項目進行分組,然后在該項目下按名稱對項目進行分組。 您需要使用GroupBy
兩次 。
result.GroupBy(x => x.CustomerName)
.Select(x => new CostByItem
{
CustomerName = x.Key,
LineItem = x.GroupBy(y => y.ItemName)
.ToDictionary(y => y.Key, y => y.Sum(z => z.Cost)),
TotalCost = x.Sum(y => y.Cost)
}).ToList();
另請注意,無需使用x => new { x.CustomerName}
。 按字符串值分組就足夠了-無需創建匿名類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.