我需要帮助将VB.Net Linq转换为C#Linq
本文关键字:Linq 转换 C#Linq Net VB 帮助 | 更新日期: 2023-09-27 18:25:22
我最近从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=组的问题;
我试着用搜索中的例子来纠正这个问题,但一直没能纠正。应该如何转换?
有两个问题:
- 查询语法不正确
- 您正试图直接使用
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
。
检查此项:
var emails =
from em in dt.AsEnumerable()
group emails = em[1]
into Emailers = group;