我需要帮助将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=组的问题;

我试着用搜索中的例子来纠正这个问题,但一直没能纠正。应该如何转换?

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

有两个问题:

  • 查询语法不正确
  • 您正试图直接使用DataTableDataTable没有实现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;