C#LINQ GroupBy具有NULL值

时间:2015-07-02 07:01:58

标签: c# linq group-by

我有一个带有日期的对象:

class MyObj
{
   public DateTime? Date {get; set;}
}

正如您所看到的,Date可以为空。是否可以使用LINQ的{​​{1}}方法按GroupBy的日期对List<MyObj>进行分组?

获得类似的内容:null

2 个答案:

答案 0 :(得分:8)

测试它并不困难。这是我的代码:

var items = new []
{
    new MyObj() { Date = null },
    new MyObj() { Date = null },
    new MyObj() { Date = DateTime.Now },
};

var grouped = items.GroupBy(x => x.Date);

我得到了这个结果:

result

答案 1 :(得分:0)

GroupBy - 方法是一种扩展方法,这意味着它是一个静态方法,它接受您的日期作为参数。它写为listWithNulls.GroupBy()但实际上被视为GroupBy(listWithNulls)。由于这种行为,null - 值可以处理,而您无法获得NullReferenceException

查看扩展方法定义。它有助于理解如何使用它们:

public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);

您可以看到第一个写为this IEnumerable<TSource> source的参数,它启用了短句source.GroupBy()