Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不支持MinOrDefault扩展_C#_Linq - Fatal编程技术网

C# 不支持MinOrDefault扩展

C# 不支持MinOrDefault扩展,c#,linq,C#,Linq,我只是想确认一下 Collection.Min(p => p.Value); 仅当集合不为空且没有MinOrEmpty或类似内容时才有效,对吗?如果集合包含可为空的类型(引用类型或可为空的值),则Min方法将在集合为空时返回null 如果集合包含不可为空的值类型,则Min方法将在集合为空时抛出invalidoOperationException 请注意,在您的示例中,当您将委托传递给Min方法时,行为由委托的返回类型决定,而不是由元素本身的类型决定 (没有,没有内置的MinOrEmpt

我只是想确认一下

Collection.Min(p => p.Value); 

仅当集合不为空且没有MinOrEmpty或类似内容时才有效,对吗?

如果集合包含可为空的类型(引用类型或
可为空的
值),则
Min
方法将在集合为空时返回
null


如果集合包含不可为空的值类型,则
Min
方法将在集合为空时抛出
invalidoOperationException

请注意,在您的示例中,当您将委托传递给
Min
方法时,行为由委托的返回类型决定,而不是由元素本身的类型决定


(没有,没有内置的
MinOrEmpty
方法。不过,有很多简单的替代方法,以获取详细信息。)

如果希望返回元素类型的默认值(如果元素类型为空),这很简单:

var min = Collection.Select(p => p.Value).DefaultIfEmpty().Min();
或者,如果需要特定的最小值:

var min = Collection.Select(p => p.Value)
                    .Concat(Enumerable.Repeat(int.Minvalue, 1)
                    .Min();
或:

这就是你想要的吗?还不完全清楚


对于非空元素类型的空序列,
Min
Max
的行为与可空元素类型的空序列稍有不同。当元素类型可为null时,当且仅当序列为空时才返回null值;对于不可为空的元素类型,将抛出
invalidoOperationException
。有关详细信息,请参见my。

如果序列为空,则计算最小值没有意义。但是,如果要在序列为空时返回特定值,可以这样做(假设您的a计算
int
值的最小值):

如果序列为空,它将返回-1,否则它将计算序列的最小值

var min = Collection.Select(p => (int?) p.Value)
                    .Min(); // min will be the null value if Collection is empty
int defaultMinValue = -1;
var min = Collection.Select(p => p.Value).DefaultIfEmpty(defaultMinValue).Min();