c# – 如果序列为空,如何使LINQ的Max-function返回默认值?

我有这个代码:

List<int> myList = new List<int>();
var max = myList.Max();
Console.Write(max);

我想要确保如果列表中没有元素,它应该使用int(0)的默认值。而是抛出一个InvalidOperationException,表示“Sequence不包含元素”。

当然我可以使用Any或者查询语法(如here)。但是我想使用流畅的语法来做到这一点。

如何解决这个问题?

尝试这个:

var myList = new List<int>();
var max = myList.DefaultIfEmpty().Max();
Console.Write(max);

LINQ的DefaultIfEmpty-method检查序列是否为空。如果是这样,它将返回一个单例序列:一个只包含一个元素的序列。这一个元素具有序列类型的默认值。如果序列包含元素,则DefaultIfEmpty-method将简单地返回序列本身。

有关更多信息,请参阅MSDN

>在Enumerable.DefaultIfEmpty<TSource> method
> default keyword in generic code

http://stackoverflow.com/questions/13284933/how-to-make-linqs-max-function-return-the-default-value-if-the-sequence-is-empt

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 如果序列为空,如何使LINQ的Max-function返回默认值?