2012-11-08 45 views
21

我有這樣的代碼:如何使LINQ的Max函數返回默認值,如果序列爲空?

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

我想,要確保如果在列表中沒有的元素,應該使用默認值int(0)。但是,正在拋出一個InvalidOperationException,指出「序列不包含任何元素」。

當然,我可以使用Any或查詢語法(如here)。但我想用流利的語法來做。

我該如何解決這個問題?如果序列是空的

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

LINQ的DefaultIfEmpty - 方法檢查:

回答

1

稍微在一個切線但可能仍然有用..另一個解決方案是將該值轉換爲可空類型;

var myInt = new Int[0].Max(i=>(int?)i);//myInt == null 
相關問題