0
我有借記對象集團與求和並加入值LINQ到對象
List<Debit> debits = new List<Debit>()
{
new Debit { Code = "A001", Length = 100, Qte = 3, Position = "MCD" },
new Debit { Code = "A001", Length = 100, Qte = 2, Position = "MED" },
new Debit { Code = "A001", Length = 200, Qte = 1, Position = "MCG" },
new Debit { Code = "A002", Length = 200, Qte = 1, Position = "MCD" },
new Debit { Code = "A003", Length = 200, Qte = 1, Position = "TBD" }
};
的這個名單,我試圖通過代碼和長度借記組,總結分組行的Qte
財產,並加入位置字符串以逗號分隔「,」在名爲sortedDebit
的Debit
的新列表中。
sortedDebit :
Code = "A001", Length = 100, Qte = 5, Position = "MCD, MED"
Code = "A001", Length = 200, Qte = 1, Position = "MCG"
Code = "A002", Length = 200, Qte = 1, Position = "MCD"
Code = "A003", Length = 200, Qte = 1, Position = "TBD"
有沒有一種方法使用linq
來做到這一點?
我想.GroupBy在幕後使用'GetHashCode'。在某些情況下,你必須重寫。在某些情況下,我將生成一個複合字符串作爲比較器,所以第二行將變成'.GroupBy(d => String.Format(「{0}:{1}」,d.Code,d.Length)) '。 –
@CraigJohnson是的,新的組合鍵必須以某種方式相等。通常這適用於例如參考類型,因爲參考將是平等的。值類型需要有效的'GetHashCode'和'Equals'實現。連接在這裏不是一個選項,因爲我們仍然需要訪問'Code'和'Length'字段。 – Alex
@亞歷克斯感謝您的解決方案,它完美的工作。但最重要的是,感謝您提供的解釋,這有助於我加深對Linq的瞭解。 – Chalumeau