我最近从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中也存在问题;
我试图使用我的搜索中的示例来解决这个问题但是却无法做到正确.该怎么转换?
有两个问题:
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.
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |