首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换IGrouping的密钥?

替换IGrouping的密钥?
EN

Stack Overflow用户
提问于 2016-10-10 13:54:30
回答 1查看 1.9K关注 0票数 0

是否有可能替换Key,其中IGrouping是分组的?

我目前按匿名类型分组,如下所示:

代码语言:javascript
复制
var groups = orders.GroupBy(o => new { o.Date.Year, o.Date.Month });

但现在我的分组密钥是匿名类型。我想用一个已定义的类型"YearMonth“替换这个分组键,使用一个重写的ToString方法。

代码语言:javascript
复制
public class YearMonth
{
    public int Year { get; set; }
    public int Month { get; set; }

    public override string ToString()
    {
        return Year + "-" + Month;
    }
}

有什么方法可以替换分组密钥吗?还是用一个新的分组键从现有的IGrouping中创建一个新的IGrouping?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-10 14:11:26

就我个人而言,我只想对字符串值进行分组,因为这似乎是您真正关心的关键。

另一个简单的选项是使用常量日创建一个表示月份的日期:

代码语言:javascript
复制
orders.GroupBy(o => new DateTime (o.Date.Year, o.Date.Month, 1))

然后就有内置的值相等和字符串格式设置。

您可以使YearMoth成为一个不可变的结构,这也会给您提供价值相等的语义:

代码语言:javascript
复制
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;
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39959962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档