2010-02-24 3 views
0

그냥 LINQ를 사용하여 개발하기 시작했지만 여전히 간단한 것을 이해할 수 없습니다. 그래서, LinqTable.SingleOrDefault(t=>(t.Field1=="value1"))"SELECT * FROM LinqTable WHERE Field1="value1" LIMIT 1"간단한 Linq 질문 : 논리 연산자를 사용하여 쿼리를 만드는 방법

방법 "SELECT * FROM LinqTable WHERE Field1="value1" AND Field2="value2" LIMIT 1과 같은 쿼리 LINQ (사용) 작성하는 SQL 같다?

+0

그냥 메모를 - 'SingleOrDefault'는 일치하는 레코드가 두 개 이상있는 경우 예외를 throw합니다. 'FirstOrDefault'는 그렇지 않습니다. –

답변

3

SingleOrDefault (t => (t.Field1 == "값 1"& & t.Field2 == "값 2"))

+0

나는 그것을 시험해 보았다. 그리고 그것은 일하지 않았다, 나는 맹세한다! 하지만 지금은 다시 시도하고 작동합니다. 감사합니다 – setrul

+0

+1, 당신은 extra()를 사용할 필요가 없습니다. @Setrul : LINQ를 더 잘 이해하려면 "LINQ 101"에 대한 Google 검색을 수행하십시오. – Zyphrax

1

일반적으로, 당신이 할 Where을 사용할 것 :

var result = LinqTable.Where(t => t.Field1 == "value1" && t.Field2 == "value2").SingleOrDefault(); 

당신은뿐만 아니라 SingleOrDefault 라인에서 직접이 작업을 수행 할 수 있습니다

var result = LinqTable.SingleOrDefault(t => t.Field1 == "value1" && t.Field2 == "value2"); 
+0

Where를 사용하지 말고 술어를 허용하는 SingleOrDefault의 오버로드를 사용하십시오. – Zyphrax

+0

두 옵션 모두 잘 작동하며 실제로 EF와 L2S에서 동일한 SQL을 생성합니다. 개인적으로, 나는 OP의 목표를 고려할 때 Where the descriptive를 사용한다. –

3
LinqTable.Where(row => row.Field1 == "value1" && row.Field2 == "value2").FirstOrDefault(); 
+0

FirstOrDefault()에 +1. 이 질문은 명시된 바와 같이 값이 고유 한 결과를 나타낼 것이라고 나타내지 않습니다. –