2017-04-02 12 views
0

저는 C#의 초보자입니다. 이제 "검색"기능에 대한 코드를 작성하고 있습니다. 아래 예제처럼 1에서 N까지의 테이블을 연결했습니다. 그리고 나는 테이블 A에 대한 데이터를 찾으려고합니다. 테이블 B, "KeyB002". (대답은 KeyA001 & KeyA003입니다.)

IQueryable을 사용하여이 구문을 사용해도 괜찮습니까? 아니면 작동하지 않습니까? SingleOrDefault 또는 FirstOrDefault가 tableA에 첨부 된 첫 번째 키만 선택하고 첨부 된 모든 키에서 검색을 수행하지 않고 tableA의 데이터를 찾지 않는지 궁금합니다 ....모든 데이터를 선택하기 위해 1에서 N까지의 테이블에 대한 IQueryable (C#)

감사합니다. 흠뻑.

(현재 구문) FYI - searchtableB_ID

var IqueryableData = from m in db.tableA.Include(p => p.tableB) select m; 
IqueryableData = IqueryableData.Where(s => s.tableB.SingleOrDefault().tableB_Key == searchtableB_ID); 

... 화면에서 & 표 A 표 B :
KeyA001 - KeyB001
KeyA001 - KeyB002
KeyA001 - KeyB005
KeyA001 - KeyB007

KeyA002 - KeyB003
KeyA002 - KeyB005 KeyB001
KeyA003 - - KeyB002
KeyA003 - KeyB006
KeyA003 -
KeyA002 - KeyA003 KeyB008

KeyB009

+0

WHERE 쿼리 내의 FirstOrDefault/SingleOrDefault 식은 두 개 이상의 레코드가 반환되는 것을 방지하지 않습니다. – Benthon

답변

0

당신은 할 수 :

var queryableData = db.tableB.Include(p => p.tableA).Where(q=> q.tableB_key == searchtableB_ID).First(m => m.tableA); 

공지 사항이 포함 반전 (p => p.tableA) 대신에 (p => p.tableB)