2012-02-05 125 views
2

馬上就要LINQ to SQL(以及一般的C#),並且還沒有成功實現.Any()之前。我使用.NET 4.0和Visual Studio 2010爲什麼我不能使用.Any()?

我添加了一個新的LINQ to SQL數據設置爲我的項目,我想做到以下幾點:

var db = new HealthIndicatorsDataContext(); 

var d = DateTime.Today; 

if(db.HealthIndicators.FirstOrDefault(h => h.LogDate == d).Any()) 
// do something 

不幸的是我m收到Cannot Resolve Sysmbol 'Any'和.Any()以紅色突出顯示。我讀過,我需要在我的項目中引用System.Core.dll,我已經添加了這個,但我仍然沒有運氣。我錯過了什麼?

回答

7
if(db.HealthIndicators.FirstOrDefault(h => h.LogDate == d).Any()) 

FirstOrDefault()返回單個項,而不是一個或IQueryableIEnumerable - Any()上那些只被定義。你大概意思寫的是:

if(db.HealthIndicators.FirstOrDefault(h => h.LogDate == d) != null)) 

或(更好):

if(db.HealthIndicators.Any(h => h.LogDate == d))) 
6

FirstOrDefault()不返回集合,因此任何()沒有意義。如果您只需要知道是否存在至少一個,則可以用.Any()替換FirstOrDefault()。

if(db.HealthIndicators.Any(h => h.LogDate == d)) 
// do something