2012-09-13 4 views
18

मैं निम्नलिखित प्रश्न हैं:LINQ अधिकतम विस्तार विधि खाली संग्रह पर एक त्रुटि देता है

var maxNumber = dbContext.Where(a => a.Id == 9).Max(a => a.Sample_Num); 

अगर वहाँ 9 का कोई आईडी है, मैं कोई त्रुटि मिलती है। मैं 0 करने के लिए परिणाम डिफ़ॉल्ट अगर वहाँ 9.

का कोई ईद मैंने कोशिश की है की तरह है:

var maxNumber = dbContext.Where(a => a.Id == 9).Max(a => a.Sample_Num) ?? 0; 

के साथ-साथ अन्य रूपों लेकिन यह

+0

मैं उपरोक्त कोड में कोई समूहबी नहीं देख सकता ... :) –

उत्तर

62

आप कर सकते थे काम करने के लिए प्राप्त करने में सक्षम नहीं था एक मिलान तत्व हो, तो जाँच करने के लिए Any का उपयोग करें:

int maxNumber = 0; 
var id9 = dbContext.Where(a => a.Id == 9); 
if(id9.Any()) 
{ 
    maxNumber = id9.Max(a => a.Sample_Num); 
} 

या आप इस्तेमाल कर सकते हैं DefaultIfEmpty(defaultValue):

012,
int maxNumber = dbContext 
    .Where(a => a.Id == 9) 
    .Select(a => a.Sample_Num) 
    .DefaultIfEmpty(0) 
    .Max(); 
+24

+1 'डिफ़ॉल्ट IFEmpty' –

+3

के चालाक उपयोग के लिए +1। मुझे 'Any()' का उपयोग करने से नफरत है क्योंकि यह दूसरी बार गणना को मजबूर करता है। – Paul

+0

^1 टिम न केवल स्मार्ट लेकिन सुन्दर है। –

संबंधित मुद्दे