문제

내가 붙어에서 번역부에서 참여 LINQToSQL 반환하는 고유 부모의 행이 있습니다.

저는 2 이블(프로젝트 Project_Notes,그리고 1 관계에 의해 연결되어 Project_ID).내가 하고 있는 키워드 검색에 여러 개의 열이에 2 개의 테이블 그리고 나만을 반환 할 수 있습니다 독특한 프로젝트는 경우에서 열 Project_Notes 포함하는 키워드를 사용합니다.이 linqtoSQl 시퀀스가 있지만 그것이 될 것으로 보인 반환 여러 프로젝트의 행이 있습니다.어쩌면 마 Exist 어떻게 든 LINQ?또 어쩌면 groupby 의 어떤 종류?

여기에 LINQToSQL:

 query = from p in query
 join n in notes on p.PROJECT_ID equals n.PROJECT_ID into projectnotes
 from n in notes.DefaultIfEmpty()
 where n.NOTES.Contains(cwForm.search1Form)
 select p;

여기에는 SQL 그것은에서 생산 프로파일

exec 전까 N'SELECT[t2].[제목],[t2].[주],[t2].[PROJECT_ID], [t2].[PROVIDER_ID],[t2].[CATEGORY_ID],[t2].[City],[t2].[UploadedDate], [t2].[SubmittedDate],[t2].[Project_Type]부터(선택 그룹()이상(주문 [t0].[UploadedDate])의[그룹],[t0].[제목],[t0].[주],[t0].[PROJECT_ID], [t0].[PROVIDER_ID],[t0].[CATEGORY_ID],[t0].[City],[t0].[UploadedDate], [t0].[SubmittedDate],[t0].[Project_Type]에서[dbo].[로젝트]로[t0]왼쪽 외부 조 [dbo].[PROJECT_NOTES]로[t1]1=1([t1].[참고]다음과 같@p0)및 ([t0].SubmittedDate]>=@p1)및([t0].[SubmittedDate] < @p2)그리고([t0].[PROVIDER_ID]= @p3)및([t0].[CATEGORY_ID]IS NULL))로[t2]는[t2].[그룹]사@p4+1 고@p4+@p5ORDER BY[t2].[그룹]',N'@p0varchar(9),@p1datetime,@p2datetime,@p3 int@p4int,@p5int',@p0='%chicago%',@p1="2000-09-02 00:00:00:000",@p2="2009-03-02 00:00:00:000",@p3=1000,@p4=373620,@p5=20

이 쿼리를 반환 모든 mutiples 의 1 관계에서 결과입니다.내가 찾을 수행하는 방법에 대해 설명 Exists LINQ 에서에서 여기입니다. http://www.linq-to-sql.com/linq-to-sql/t-sql-to-linq-upgrade/linq-exists/

여기에는 이를 사용하여 LINQToSQL Exists:

query = from p in query
where (from n in notes
where n.NOTES.Contains(cwForm.search1Form)
select n.PROJECT_ID).Contains(p.PROJECT_ID)
select p;

생성된 SQL statement:

exec 전까 N'SELECT COUNT(*)AS[value]에서[dbo].[로젝트]로[t0]가 (이 존재하(선택으로 NULL[빈]에서[dbo].[PROJECT_NOTES]로[t1]가 ([t1].PROJECT_ID]=([t0].[PROJECT_ID]))그리고([t1].[참고]다음과 같@p0)))고 ([t0].[SubmittedDate]>=@p1)및([t0].[SubmittedDate] < @p2)그리고([t0].[PROVIDER_ID]= @p3)및([t0].[CATEGORY_ID]은 NULL)',N'@p0varchar(9),@p1datetime,@p2datetime,@p3 int',@p0='%chicago%',@p1="2000-09-02 00:00:00:000",@p2="2009-03-02 00:00:00:000",@p3=1000

나 SQL 시간 제한에 databind() 서 사용 Exists.

도움이 되었습니까?

해결책

그것은 반환되는 여러 개의 행이 프로젝트

그래,얼마나 참여 작동합니다.프로젝트에 있는 5 일치하는 메모하여 5 번입니다.


어떤 경우 문제입니다-"가입"잘못된 관용어!

를 필터링할 프로젝트하는 사람들을 포함 특정 텍스트:

var query = db.Project
  .Where(p => p.Notes.Any(n => n.NoteField.Contains(searchString)));

다른 팁

당신이 사용하 DefaultIfEmpty extension 방법입니다.거기에 몇 가지 질문에 그래서 이미 있는 방법을 보여줍니다.여기에는 좋은 예를 들어:

어떻게 구사할 수 있는 중첩을 가입,추가하고,그룹에서 LINQ?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top