2011-08-27 2 views
1

아래 코드는 Linq to SQL 솔루션에서 사용되며 폼의 Load 이벤트에 있습니다.Linq 함수에 SQL 형식 전달 방법

정렬 된 사람 이름 목록을 표시하고 값 구성원을 해당 사람의 ID로 설정하면 문제가 없습니다.

그러나 저는이 '사람'콤보 박스를 많이 사용하려고합니다. 따라서 유틸리티 코드에 서브를 넣고 싶습니다. 폼의 Load 이벤트에는 단 한 줄만 있습니다. 하위 같이 시작하는 것 Call ComboboBoxPeople(cbo, tblTurnbackMain, ReportedByID)

:

내가 좋아하는 뭔가를 호출 할 Public Sub ComboboxPeople(cbo as Combobox, tbl as 'sometype', fld as 'someothertype') 내가 tblfld에 대한 매개 변수 유형으로 사용할 수 있습니다 무엇

?

'-- cboReportedBy datasource 
Dim LQ = (From p In TurnbackDC.vewPeopleAll, t In TurnbackDC.tblTurnbackMain 
    Where p.PeopleID = t.ReportedByID 
    Select p.Person, p.PeopleID).Distinct() 

Dim LT = From x In LQ 
    Order By x.Person 
    Select x.Person, x.PeopleID 

cboReportedBy.DataSource = LT 
cboReportedBy.DisplayMember = "Person" 
cboReportedBy.ValueMember = "PeopleID" 

고마워요! Dan

+1

'tbl'과'fld' 매개 변수는 무엇을 의미합니까? 그리고 그들이 게시 한 코드와 어떤 관련이 있습니까? – svick

+0

좋아하는 답을 표시하는 것을 잊지 마십시오 ;-) – Steven

답변

0

첫 번째 LINQ 쿼리에서 익명 형식을 정의하고 있습니다. 원한다면 거의 모든 코드 블록 (LQLT)을 단일 메서드에 넣고 LT를 반환 할 수 있습니다. LTT은 익명 형식 인이있는 IEnumerable(Of T)을 포함하기 때문에 다음과 같이, 당신은 당신의 방법은 단순히 IEnumerable을 반환하도록 할 수 있습니다 :

Public Shared Function GetAllPeople() As IEnumerable 
    ' code here 
End Function 

이 ASP.NET 웹 폼에서 작동, 웹 폼이로드 리플렉션을 사용하기 때문에 정의한 회원의 데이터 (PersonPeopleID). 그러나이 방법은 컴파일 시간이 지원되지 않으므로 약간 약합니다. 따라서 또 다른 옵션은 및 PeopleID이라는 두 개의 공용 속성이 포함 된 Class (이 코드는 PersonDTO이라고 함)을 정의하고이 메서드가 IEnumerable(Of PersonDTO) 또는 더 나은 PersonDTO 개체 배열을 반환하도록 할 수 있습니다.