为什么我不能使用.Any()?

Mic*_*l A 2 c# linq linq-to-sql

马上就是我对LINQ to SQL(以及一般的C#)的新手,并且之前没有成功实现过.Any().我在Visual Studio 2010中使用.Net 4.0.

我已经为我的项目添加了一个新的LINQ to SQL数据集,我正在尝试执行以下操作:

var db = new HealthIndicatorsDataContext();

var d = DateTime.Today;

if(db.HealthIndicators.FirstOrDefault(h => h.LogDate == d).Any())
 // do something
Run Code Online (Sandbox Code Playgroud)

不幸的是我收到了Cannot Resolve Sysmbol 'Any'.Any()以红色突出显示.我已经读过我需要在我的项目中引用System.Core.dll,我添加了这个,但我仍然没有运气.我错过了什么?

Bro*_*ass 7

if(db.HealthIndicators.FirstOrDefault(h => h.LogDate == d).Any())
Run Code Online (Sandbox Code Playgroud)

FirstOrDefault()返回单个项而不是IQueryableIEnumerable- Any()仅在这些项上定义.你可能想写的是:

if(db.HealthIndicators.FirstOrDefault(h => h.LogDate == d) != null))
Run Code Online (Sandbox Code Playgroud)

或更好):

if(db.HealthIndicators.Any(h => h.LogDate == d)))
Run Code Online (Sandbox Code Playgroud)


Mag*_*gie 6

FirstOrDefault()不返回集合,因此Any()没有意义.如果您只需要知道是否存在至少一个,则可以使用.Any()替换FirstOrDefault().

if(db.HealthIndicators.Any(h => h.LogDate == d))
// do something
Run Code Online (Sandbox Code Playgroud)