2015-01-20 3 views
0

이 LINQ 문이 실제로 무엇을하는지 이해하려고합니다. 저는 LINQ에 대한 경험이 없으므로 "평범한 영어"번역본을 얻으 려합니다. 거기에 충분한 정보가 여기에 당신을 도울하거나하지 않는 경우 잘 모르겠어요 OrderByValues, 계약, PayType, PayAmountVB.Net의 LINQ 문 - 뭐하는거야?

Dim groupIDs = From r In myds.MyDataTable Select OBV = r.Item("OrderByValues"), PT = r.Item("PayType"), Contract = r("Contract") Distinct 
For Each r in groupIDS 
    a = r.OBV 
    b = r.PT 
    c = r.Contract 
Next 

:

MyDataTable는 다음과 같은 데이터가 포함되어 있습니다. 나는 어떤 도움을 주셔서 감사합니다.

감사합니다.

+0

여기서 linq 문은 무엇입니까? –

+0

MSDN 설명서와 함께 기본으로 시작하십시오 ... –

답변

0

첫 번째 줄은 anonymous types의 모음을 보유 할 쿼리를 만듭니다. LINQ's deferred execution 때문에 아직 쿼리가 실행되지 않았습니다. 이것은 조각으로 나눌 수 있습니다

  • From r In myds.MyDataTable는 IEnumerable을 (일반적으로 배열 또는 목록))의 개별 요소로 r을 정의 myds.MyDataTable
  • Select OBV = r.Item("OrderByValues"), ... Distinct 속성과 익명 형식이 OBV, PT, Contract 및 양수인이라고 생성 요소의 값은 r입니다.

foreach 루프는 실제로 쿼리를 실행하고 반복 할 IEnumerable을 만듭니다. 그런 다음이 루프 내에서 반복적으로 a, b, c을 쿼리에 정의 된 익명 형식의 속성으로 설정합니다. 변수 a, b, c은 그 (것)들에 마지막으로 놓인 가치 만 기억하기 때문에 이것은 조금 이상하게 보입니다.

자세한 내용은 LINQ을 참조하십시오.

+0

코드에 더 많은 것이 있었고, 단순함을 위해 무리를 제거했습니다. 댓글을 달았습니다. – SimpleMan

0

중복 된 행을 무시하고 데이터 테이블에서 모든 "OrderByValues", "PayType"및 "Contract"열을 선택합니다.

그런 다음 결과 집합을 반복하고 변수 "a", "b"및 "c"에 각각 3 개의 값을 할당합니다.

+0

PT = r.Item ("PayType")은 PT = r ("PayType")과 동일합니까? – SimpleMan

+0

@ SimpleMan VB에서는 그렇습니다. 'Item'은 VB에서 생략 할 수있는 기본 인덱서이므로'r ("PayType")'은 실제로'r.Item ("PayType")'으로 컴파일됩니다. –