C#LINQ从数据集中获取两列唯一的数据行

时间:2017-07-17 04:19:31

标签: c# linq field unique rows

我正在从数据库加载数据并使用详细记录填充数据集,其中studentId列在许多记录中重复。还使用以下代码从数据集中获取不同的数据行:

tbl=tbl.AsEnumerable()
.GroupBy(row => row.Field<int>("studentId"))
.Select(group =>group.First())
.CopyToDataTable();

这将返回唯一数据行中的所有列。 我的问题,如何只选择特定的列? say studentId,studentName,birthdate?

3 个答案:

答案 0 :(得分:0)

tbl=tbl.AsEnumerable()
  .GroupBy(row => row.Field<int>("studentId"))
  .Select(group =>group.First())

  .Select(s=> new {
    s.studentId,
    s.studentName,
    s.birthdate
  })
  .CopyToDataTable()

答案 1 :(得分:0)

你需要使用像这样的选择:

  tbl = tbl.AsEnumerable()
                .GroupBy(row => row.Field<int>("studentId"))
                .Select(group => new {
                    studentId = group.FirstOrDefault().studentId,
                    studentName = group.FirstOrDefault().studentName,
                    birthdate = group.FirstOrDefault().birthdate
                })
                .CopyToDataTable();

答案 2 :(得分:0)

请尝试下面的代码,我没有尝试编辑。

tbl=tbl.AsEnumerable()
.GroupBy(row => row.Field<int>("studentId"))
.Select(new {id = row.Field<int>("studentId"),name = 
 row.Field<int> 
("studentName")}). Distinct ()
.CopyToDataTable();