c# - 使用 LINQ 从 DataTable 获取不同的项目

标签 c# asp.net linq

我在 DataTable 中返回数据,如下所示:

Department | EmployeeName

1 | Employee1

1 | Employee1

2 | Employee2

3 | Employee3

3 | Employee3

3 | Employee3

我试图只获取不同的行并将其放入集合中,如下所示:

IEnumerable<Department> departments = dt.AsEnumerable().Select(row =>
    new Department
        {
            DepartmentID = Int32.Parse(row["DepartmentID"].ToString()),
            Employee = new Employee { EmployeeName = row["EmployeeName"].ToString() }
        }).Distinct();

它应该只返回 3 行,但实际上却返回了全部 6 行。

我在这里做错了什么?

最佳答案

不确定,但以下之一可能适合您.......

就这样做

var distrows= table1.AsEnumerable().Distinct();

将完成您的任务......而不是从distrow创建部门集合..

IEnumerable<Department> departments = (from DataRow dRow in distrows   
                         new Department
        {
            DepartmentID = Int32.Parse(row["DepartmentID"].ToString()),
            Employee = new Employee { EmployeeName = row["EmployeeName"].ToString() }
        });

var distinctRows = (from DataRow dRow in dTable.Rows
            select new {col1=dRow["dataColumn1"],col2=dRow["dataColumn2"]}).Distinct();


IEnumerable<Department> departments = (from DataRow dRow in distrows   
                             new Department
            {
                DepartmentID = Int32.Parse(distinctRows.col1),
                Employee = new Employee { EmployeeName = distinctRows.col2.ToString() }
            });

关于c# - 使用 LINQ 从 DataTable 获取不同的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9299223/

相关文章:

c# - 在 .Net/C# 中抛出多个异常

c# - 检查 ICollection 是否实际上是只读的正确方法

c# - 如何使用 C# Stack 对象保存日期时间值并计算平均值

c# - 您可以从 Windows 10 通用应用程序调用外部应用程序吗? C#

c# - 替换动态字符串中的部分文本

javascript - 如何缩小 knockoutjs 代码文件

c# - 网站访问者可以通过任何方式查看aspx.cs文件的内容吗?只是想知道所有漏洞,中断或存在的内容。

c# - 学习 Entity Framework

c# - 比较包含很多对象的两个列表

C# - Linq 多对多与联结表