-3

我正在尝试对自定义对象列表中的元素进行分组。

物体:

Public class MyObj
{
    public string groupName{ get; set; }
    public int year{ get; set; }

    public MyObj(string groupName)
    {
        this.GroupName = groupName;
    }    

    public MyObj(string groupName, int year)
    {
        this.GroupName = groupName;
        this.Year = year;
    }
}

名单 :

List<MyObj> list = new List<MyObj>();
list.Add(new MyObj("group1", 2012));
list.Add(new MyObj("group1", 2013));
list.Add(new MyObj("group2", 2012));
list.Add(new MyObj("group2", 2013));
list.Add(new MyObj("group3"));
list.Add(new MyObj("group3"));

如果我做类似的事情:

IEnumerable<IGrouping<string, MyObj>> listMyObj = list.GroupBy(o => o.Year);

“group3”将被包含在结果列表中。如何按年份对 MyObj 进行分组并在结果中保留一个空的“group3”项目?

4

2 回答 2

1

奇怪的是,您希望某些组甚至接受空组,您的查询是错误的,因为Where已经过滤掉了所有带有 的元素q.DateRealisation == DateTime.MinValue,这对您有用:

var qualifs2 = lstQualifs.GroupBy(q => q.Contrat)
                         .Select(g=>g.Where(q => q.DateRealisation != DateTime.MinValue))
                         .SelectMany(g=>g);
于 2013-08-30T11:15:43.287 回答
0

你会得到一个小组。该组的密钥将是0,因为default(int) == 0

当您不分配类成员变量时,它被设置为其默认值。对于引用类型 that's null,别名整数/浮点类型 that's 0,以及用户定义struct的 s ,它们的值填充为默认值。

于 2013-08-30T08:10:38.640 回答