나는 이것이 바로 지난 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'
자세한 정보를 제공해주십시오. 무엇을 기대하고 무엇을 얻었습니까? 구체적인 예를 보여줄 수 있습니까? –
LINQ-to-SQL 또는 Entity Framework입니까? 뚜렷한 두 가지. –