是否可以替換IGrouping
分組的Key
?替換IGrouping的密鑰?
我目前正在由一個匿名類型分組如下:
var groups = orders.GroupBy(o => new { o.Date.Year, o.Date.Month });
但現在我的分組關鍵是一個匿名類型。我想用一個已定義的類型「YearMonth」替代此分組鍵,並覆蓋ToString
方法。
public class YearMonth
{
public int Year { get; set; }
public int Month { get; set; }
public override string ToString()
{
return Year + "-" + Month;
}
}
有什麼方法可以替換分組鍵嗎?或者用新的分組鍵從現有的IGrouping中創建一個新的IGroup?
爲什麼你要組一個類型,然後更改密鑰,而不是隻是按照你實際想要擁有的鑰匙進行分組? – Servy
只需使用'o => new YearMonth(o.Date.Year,o.Date.Month)'代替...只要'YearMonth'適當地覆蓋'Equals'和'GetHashCode',那應該沒問題...至少對於LINQ to Objects而言。 –
這是'readonly'有一個很好的原因,你不應該稍後修改什麼是用來識別相同的對象。 –