【问题标题】:Converting Vb.Net Linq to C# but Distinct Error将 Vb.Net Linq 转换为 C# 但明显错误
【发布时间】:2014-02-14 01:21:09
【问题描述】:

我正在尝试将我的一些代码从 vb.net 移至 c# 类库。我在 vb.net 中有针对 DataTable 进行查询的 linq 查询。

Dim qryUser = From db In dt.AsEnumerable() _
              Select userName = db.Field(Of String)("UserName") Distinct
              Order By userName Ascending

现在我正在尝试在 C# 中完成这项工作,我已经

IEnumerable<string> qryUser = (from db in Table.AsEnumerable()
                               orderby db.Field<string>("UserName") ascending
                               select db.Field<string>("UserName"));

现在我找到的所有示例都显示了我应该只需要添加

.Distinct()

到我的 c# linq 查询的末尾,使其看起来像这样

IEnumerable<string> qryUser = (from db in Table.AsEnumerable()
                               orderby db.Field<string>("UserName") ascending
                               select db.Field<string>("UserName")).Distinct()

但是这样做会给我的 IDE 带来错误

错误 1 ​​'System.Data.EnumerableRowCollection' 不包含 'Distinct' 的定义并且没有扩展方法 'Distinct' 接受类型的第一个参数 'System.Data.EnumerableRowCollection' 可以找到

有人可以告诉我这样做的正确方法吗?提前致谢。

【问题讨论】:

  • 您能否在VB中省略的C#代码中添加userName =部分?

标签: c# vb.net linq compiler-errors distinct


【解决方案1】:

我能够复制/粘贴您的代码(并设置一个小的DataTable)并且效果很好。

Distinct 扩展方法位于 System.Linq 命名空间中。

确保以下 using 指令位于类文件的顶部:

using System.Linq;

【讨论】:

  • 天哪,我失败了。我完全忘记了使用 System.Linq
猜你喜欢
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多