我最近从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;
我尝试使用搜索中的示例来解决这个问题,但却无法正确使用。该怎么转换?
答案 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;