我需要帮助将VB.Net Linq转换为C#Linq

Buc*_*cks 1 c# linq vb.net

我最近从VB切换到C#,并且在大多数情况下,能够毫无困难地进行转换.目前我正在努力将VB.Net程序转换为C#,并且遇到包含Linq的几个代码块时遇到问题.

这是我遇到问题的VB.Net代码行之一:

Dim emails = From em In dt Group By email = em(1) Into Emailers = Group 
Run Code Online (Sandbox Code Playgroud)

我试图用C#做同样的事情:

var emails = 
    from em in dt
    group emails = em[1] 
    into Emailers = group;
Run Code Online (Sandbox Code Playgroud)

我在dt上遇到编译错误,它说找不到源类型'System.Data.DataTable'的查询模式的实现.'找不到GroupBy'.VS在整个Emailers = group中也存在问题;

我试图使用我的搜索中的示例来解决这个问题但是却无法做到正确.该怎么转换?

Jon*_*eet 7

有两个问题:

  • 查询语法不正确
  • 你正试图DataTable直接使用; DataTable没有实现IEnumerable<T>这就是为什么它在C#中失败的原因.(据推测VB DataTable特别以某种方式处理.)

我的VB是垃圾,特别是对于LINQ,所以我不理解查询 - 但看起来你只是试图将行分组一列.如果是这样的话,就像这样简单:

var emails = from em in dt.AsEnumerable()
             group em by em[1];
Run Code Online (Sandbox Code Playgroud)

甚至:

var emails = dt.AsEnumerable().GroupBy(em => em[1]);
Run Code Online (Sandbox Code Playgroud)

确保你有:

using System.Data;
Run Code Online (Sandbox Code Playgroud)

在你的代码中,它将从中AsEnumerable获取DataTableExtensions.