我在 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/