2012-06-13 34 views
2

看來我已經絆倒了LINQ的路,只是設法看到它的用處。我不確定我是否問得太多,或者如果我沒有正確地做事情。我有以下笨拙的代碼,如果找不到任何東西,我該如何返回LINQ的特定值?

class CStation{ 
    public String Make; 
    public List<ulong> TunedStations; 
} 

List<List<ulong>> mStations=(from t in Radios where t.Make==aMake select t.TunedStations).ToList(); 
if(mStations.Count!=0) 
    return mStations[0]; 
return null; 

功能是的,但我能一些如何做到這一點的LINQ?

+5

'FirstOrDefault'或'SingleOrDefault',也許? (在這種情況下,「特定值」是'null',它應該很好地工作。) – 2012-06-13 01:56:38

回答

2

您可以使用此:

var myDefault = ......; 

return (from t in Radios 
     where t.Make==aMake 
     select t.TunedStations) 
     .FirstOrDefault() ?? myDefault ; 

或作爲拉姆達

var myDefault = ......; 
     
    return Radios.Where(t => t.Make == aMake) 
           .FirstOrDefault() ?? myDefault ;  

這些將收集或默認中返回的第一個項目(或如果要返回空值,則省略?? myDefault

6

只需使用

return (from t in Radios where t.Make==aMake select t.TunedStations).FirstOrDefault(); 
+0

只需注意,由於它是對象類型,因此它的默認值爲null。 – ars265