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

C# C LINQ仅从数据集的两列中获取唯一的数据行,c#,linq,field,unique,rows,C#,Linq,Field,Unique,Rows,我正在从数据库加载数据,并用详细记录填充数据集,其中studentId列在许多记录中重复。还使用以下代码从数据集获取不同的数据行: tbl=tbl.AsEnumerable() .GroupBy(row => row.Field<int>("studentId")) .Select(group =>group.First()) .CopyToDataTable(); 这将返回唯一数据行中的所有列。 我的问题是,如何仅选择特定列?说出studentId、studentNa

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

tbl=tbl.AsEnumerable()
.GroupBy(row => row.Field<int>("studentId"))
.Select(group =>group.First())
.CopyToDataTable();
这将返回唯一数据行中的所有列。
我的问题是,如何仅选择特定列?说出studentId、studentName、生日?

您需要像这样使用select:

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

  .Select(s=> new {
    s.studentId,
    s.studentName,
    s.birthdate
  })
  .CopyToDataTable()
  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();

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

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

您可以尝试.Selectgroup=>new{group.First.studentId,group.First.studentName,group.First.birthdate}您不能从数据中复制一列,然后使用CopyToDataTable。输出表和输入表必须具有相同的架构。因此,您可以使用group.First[列名或索引]。请键入完整语句pleasestudentId、studentName和生日未知我不知道您的数据结构是什么,这部分需要计算。我给你的是概念。您在intellisense弹出窗口中有哪些选项。。。当你输入s.?你有ItemArray和Field以及其他选项,关键是我这里没有什么可处理的,只有你简洁的诗句片段。我的select语句是实现您想要的功能的方法,但您需要了解如何从底层源获取使用最终SELECTOR进行投影的列如果在没有元素时调用FirstOrDefault,它将返回null,您的代码将抛出一个NullReferenceException。@KeyurPATEL我不这么认为,它将不会返回任何结果。啊,的确,您是对的,我没有看到GroupBy将永远不会返回空集,因为它一开始不会对这些结果进行分组。我只看了第一个结果。我的错:@KeyurPATEL它发生了: