문제

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();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top