2012-08-22 2 views
0

나는 이것이 바로 지난 2. 나는 그것이Linq는 SQL로 매인 교차은

var outerquery = db.Employees.Where(x => x.Name = "Smith").Select(x => x.EmployeeID); 

foreach(var name in nameList){ 
var innerQuery = db.Employees.Where(x => x.Name = name).Select(x => x.EmployeeID); 
outerquery = outerquery.Intersect(innerQuery); 
} 

return outerquery.ToList(); 

편집 된 IQueryable 함께 할 수있는 뭔가가 생각 루프에있는 모든 항목을 교차되지 않는 이유를 알아낼 수 없습니다 - 보다 구체적인 예입니다. 이 테이블에는 약 3 천 5 백만 레코드가 있습니다.

표에는 ID, ConceptID, Word가 있습니다. 단어는 여러 ConceptID를 가질 수 있습니다. & 레코드 당 단어가 하나 있습니다. 검색 문자열 '어깨 통증 만성'을 교차시키고 그 3 단어를 공유하는 모든 ConceptID를 가져와야했습니다. 그것은 반환해야합니다 :

Concept1234 - shoulder 
Concept1234 - pain 
Concept1234 - chronic 

를 내가 (단지 마지막 2)을 얻고 무엇 : 35000000 개 기록에 대해 OR을 수행

Concept1234 - pain 
Concept1234 - chronic 

도이 괴물 서버와 거친 내가 &이 교집합이있다 1 초도 채 안되는 유일한 길. 당신은 루프의 각 반복 교체 가져옵니다 foreach 루프 내부 outerquery이 있고 이전 데이터가 손실

SELECT ConceptID FROM WordTable WHERE Word = 'shoulder' 
INTERSECT 
SELECT ConceptID FROM WordTable WHERE Word = 'pain' 
INTERSECT 
SELECT ConceptID FROM WordTable WHERE Word = 'chronic' 
+0

자세한 정보를 제공해주십시오. 무엇을 기대하고 무엇을 얻었습니까? 구체적인 예를 보여줄 수 있습니까? –

+0

LINQ-to-SQL 또는 Entity Framework입니까? 뚜렷한 두 가지. –

답변

0

- 나는 SQL (엔티티 프레임 워크)에 LINQ로 생성하는 것을 시도하고 무엇

이있다.

+0

그러나 외부 쿼리에 교차해서는 안되며 외부 쿼리에 다시 설정하면 변경 사항을 유지할 수 있습니까? – Alex