2012-02-05 3 views
2

방망이를 벗어났습니다. 저는 LINQ to SQL (그리고 일반적으로 C#)에 익숙하며 .Any()를 성공적으로 구현하지 못했습니다. 불행하게도 나는 '.Any()를 사용할 수없는 이유는 무엇입니까?

var db = new HealthIndicatorsDataContext(); 

var d = DateTime.Today; 

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

: 나는 2010 년

내가 내 프로젝트로 설정 SQL 데이터에 새로운 LINQ를 추가 한 나는 다음을 수행하려고 해요 비주얼 스튜디오 닷넷 4.0을 사용하고 있습니다 m은 Cannot Resolve Sysmbol 'Any'이고 .Any()는 빨간색으로 강조 표시됩니다. 내 프로젝트에서 System.Core.dll을 참조해야한다고 읽었습니다.하지만이 파일을 추가했지만 여전히 운이 없습니다. 내가 뭘 놓치고 있니?

답변

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))) 
6

FirstOrDefault() 그래서 상관() 이해가되지 않습니다 컬렉션을 반환하지 않습니다. 적어도 하나가 있는지 알아야 할 경우 FirstOrDefault()를 .Any()로 바꿀 수 있습니다.

if(db.HealthIndicators.Any(h => h.LogDate == d)) 
// do something 
관련 문제