2013-07-01 4 views
0

하나의 테이블에서 이름을 쿼리 한 다음 그 결과를 사용하여 마스터 레코드를 DataGridView로 가져 오려고합니다. 그래서 내가해야 할 일은 텍스트 상자에 넣은 것과 같은 관심 표의 이름을 얻은 다음 그 결과를 사용하여 CaseSelector 테이블에서 데이터를 가져 와서 해당 결과에 바인딩 소스 필터를 설정하는 것입니다. 왜이 caseSelectorBindingSourceFilter에 결과를 설정할 수없는 것Linq to SQL JOIN?

   var results = from CaseSelector in db.CaseSelectors 
        from Interest in db.Interests 
        where SqlMethods.Like(Interest.First, txtFirst.Text) && SqlMethods.Like(Interest.Last, txtLast.Text) 
        select CaseSelector; 

caseSelectorBindingSource.Filter = ("CaseNumberKey =" + results); 
+0

가입 하시겠습니까? –

+0

@JakubKonecki 예 조인합니다. interestresults에서 ID를 가져와 CaseSeclotr에 가입시키는 방법은 무엇입니까? – korrowan

답변

1

LINQ 여기에 쿼리를 조인 당신은 예를 찾을 수 있습니다

http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

나는 당신의 DB 스키마를 모르지만 당신이있어

+0

어떻게 조인 쿼리가 작동하는지 알지만 두 번째 쿼리와 결합하는 첫 번째 쿼리의 결과를 사용하는 방법을 모릅니다. – korrowan

+0

좋아, 내가 조인을 반영하도록 위의 변경했습니다. bindingsource.filter를 어떻게 설정합니까? – korrowan

+0

실제로 원하는 데이터를 검색 할 수 있도록 select 절을 변경해야합니다. 그런 다음 UI 위젯에서 해당 데이터를 볼 수있게하십시오. – JustinDanielson

0

방금 ​​검색 한 것은 유효한 caseNumberKeys의 SQL 세트입니다. 당신은 interestsresults 반복하고 SQLSET의 문자열 표현으로 변환해야합니다 뭔가

caseSelectorBindingSource.Filter = "CaseNumberKey in " + interestsresultsAsSQLSET; 

처럼

귀하의 casefilter가 있어야한다. 운이 좋았다면, .toString()을 시도해보고 무슨 일이 일어나는 지 볼 수 있습니다.

string interestsResultsAsSQLSet = "("; 
//write most of them 
for(int i=0; i<interestsresults.size() - 1; i++) { 
    interestsResultAsSQLSet.append(interestsresults[i] + ","); 
//write the last one, with right paren 
interestsresults.append(interestsresults[interestsresults.size() -1] + ")"); 

저는 하루 종일 Java로 작성하고 기본 언어 오류는 무시합니다. : P

+0

감사합니다 Justin! .size 및 .append에 대한 참조가 필요합니까? 나는 분명히 하나를 놓치고있다! – korrowan

+0

+ = 연산자 만 변경하십시오. .size()는 .count() 또는 .length() 일 수 있습니다. C# 인텔리 센스를 확인하십시오. – JustinDanielson

+0

관심 분야가 var 인 경우 forere (관심 분야의 객체 o)를 사용하여 반복해야합니다. 목록 (.toList())에 캐스트 할 수 있다면 작업하기가 더 쉬울 것입니다. – JustinDanielson