문제
ado.net/sqlclient에서 나는 종종 다음과 같은 일을 할 것입니다.
SELECT COUNT(*) FROM SomeTable WHERE SomeKey = 1234
... 그리고 executescalar를 사용하여 카운트 값을 반환합니다.
linqtosql을 사용하여 어떻게 동일한 작업을 수행합니까?
해결책
if (context.SomeTable.Any(row => row.SomeKey == 1234))
{
DoStuff();
}
당신은 또한 사용할 수 있습니다 Count()
.
if (context.SomeTable.Count(row => row.SomeKey == 1234) > 0)
{
DoStuff();
}
그러나 이것은 항상 모든 행을 통과해야합니다. Any()
첫 번째 일치 행 후에 돌아올 수 있습니다 Any()
더 나은 성능을 가질 수 있습니다.
다른 팁
LINQ에서 SQL이 연기 된 실행이라는 것을 기억하십시오. 즉, 쿼리는 실제로 컬렉션에 액세스 할 때만 실행됩니다. 그러므로:
var q = (from p in db.SomeTable
where p.SomeKey == 1234
select p).Count();
사물의 SQL 측면에서 select count ()로 변합니다.
무언가가 있는지 확인하려면 모든 기능을 사용할 수 있습니다.
if (context.SomeTable.Any(i => i.SomeKey == 1234))
{
return true;
}
또는 실제로 해당 카운트를 알고 싶다면 Where Function 및 Count 함수를 사용할 수 있습니다.
context.SomeTable.Where(i=> i.SomeKey == 1234).Count();
제휴하지 않습니다 StackOverflow