是否有可能替换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中创建一个新的IGrouping?
发布于 2016-10-10 14:11:26
就我个人而言,我只想对字符串值进行分组,因为这似乎是您真正关心的关键。
另一个简单的选项是使用常量日创建一个表示月份的日期:
orders.GroupBy(o => new DateTime (o.Date.Year, o.Date.Month, 1))然后就有内置的值相等和字符串格式设置。
您可以使YearMoth成为一个不可变的结构,这也会给您提供价值相等的语义:
public struct YearMonth
{
public readonly int Year;
public readonly int Month;
public YearMonth(int year, int month)
{
Year = year;
Month = month;
}
public override string ToString()
{
return Year + "-" + Month;
}
}https://stackoverflow.com/questions/39959962
复制相似问题