马上就是我对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,我添加了这个,但我仍然没有运气。我错过了什么?
答案 0 :(得分:7)
if(db.HealthIndicators.FirstOrDefault(h => h.LogDate == d).Any())
FirstOrDefault()
会返回单个项,而IQueryable
或IEnumerable
- 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