我有一个带有日期的对象:
class MyObj
{
public DateTime? Date {get; set;}
}
正如您所看到的,Date
可以为空。是否可以使用LINQ
的{{1}}方法按GroupBy
的日期对List<MyObj>
进行分组?
获得类似的内容:null
?
答案 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);
我得到了这个结果:
答案 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()
。