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

时间:2012-02-05 03:52:08

标签: 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

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

2 个答案:

答案 0 :(得分: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)))

答案 1 :(得分:6)

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

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