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

时间:2012-02-22 16:22:20

标签: c# vb.net linq

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

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

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

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

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

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

我尝试使用搜索中的示例来解决这个问题,但却无法正确使用。该怎么转换?

2 个答案:

答案 0 :(得分:7)

有两个问题:

  • 查询语法不正确
  • 您正试图直接使用DataTable; DataTable没有实现IEnumerable<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;
在您的代码中

,以便它从DataTableExtensions获取AsEnumerable

答案 1 :(得分:0)

检查一下:

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