是否可以替换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'有一个很好的原因,你不应该稍后修改什么是用来识别相同的对象。 –