2012-02-22 7 views
1

저는 최근 VB에서 C#으로 전환했으며, 대부분의 경우 너무 많은 문제없이 전환을 할 수있었습니다. 현재 나는 VB.Net 프로그램을 C#으로 변환하고 있으며 Linq가 포함 된 몇 가지 코드 블록에 문제가 있습니다.VB.Net Linq를 C# Linq로 변환하는 데 도움이 필요합니다.

이것은 내가에 문제가 있어요 코드의 VB.Net 라인 중 하나입니다 :이 같은 C#에서 같은 일을하는 것을 시도했다

Dim emails = From em In dt Group By email = em(1) Into Emailers = Group 

:

var emails = 
    from em in dt 
    group emails = em[1] 
    into Emailers = group; 

I 소스 유형 'System.Data.DataTable'에 대한 쿼리 패턴 구현을 찾을 수 없습니다. 'GroupBy'를 찾을 수 없습니다. VS는 또한 전체적으로 Emailers = 그룹에 문제가 있습니다.

나는 내 검색에서 예를 사용하여이 권리를 얻으려고했지만 올바른 결과를 얻을 수 없었습니다. 어떻게 변환해야합니까?

+1

당신이 오히려 VB의 모습을 단지 것보다 달성하기 위해 노력하고 있었다 무슨 말을 할 수 있다면 그것은 도움이 될 것이다. –

+0

변환 과정에서 [이] (http://www.developerfusion.com/tools/convert/vb-to-csharp/) VB.NET에서 C# 변환기까지 도움이 될 수 있습니다. –

+0

죄송합니다. Jon. 행을 하나의 열로 그룹화하려고했습니다. Samuel는 링크에 감사드립니다. 나는 그 특별한 것을 사용하지 않았지만 내가 시도한 변환기의 대부분은 Linq을 잘하지 않는다. 고마워, 그래도 한 번해볼 께. –

답변

7

두 가지 문제가 있습니다

  • 쿼리 구문은 직접 DataTable을 사용하려는
  • 잘못; DataTableIEnumerable<T>을 구현하지 않으므로 C#에서는 실패합니다. (아마도 VB 핸들 DataTable 특별히 어떻게 든.)

내 VB 특히 LINQ를 들어, 쓰레기, 그래서 쿼리를 이해하지 않는 -하지만 당신은 단지 하나 그룹 행을하려는 것처럼 보이는 기둥. 심지어

var emails = from em in dt.AsEnumerable() 
      group em by em[1]; 

또는 : : 그런 경우에는, 그것만큼 간단

var emails = dt.AsEnumerable().GroupBy(em => em[1]); 

있는지 확인하십시오, 당신은 : 코드에서

using System.Data; 

, 그것은 데리러 갈게 있도록 .

+0

'AsEnumerable'은 VB.NET에서는 DataTable에 필요하지 않습니다. 컴파일러가 대신 해줄 것이라고 생각합니다. –

+0

@TimSchmelter : 맞습니다. 반면 C#입니다. –

0

확인이 :

var emails = 
    from em in dt.AsEnumerable() 
    group emails = em[1] 
    into Emailers = group; 
관련 문제