繁体   English   中英

选择与dataTable.AsEnumerable不同

[英]Select distinct from dataTable.AsEnumerable

我有一个数据表dtStudent,其结构如下

Id | Name | Class | RoomNum | Subject
---------------------------------------
1  | ABC  | 5     | 10      | Maths
1  | ABC  | 5     | 10      | Science
1  | ABC  | 5     | 10      | English

如您所见,它只包含主题列的不同数据。

现在,我想获取classRoomNum列的值。 由于所有行的值都相同,因此我正在使用以下代码-

var stdDetails = from r in DtTable.AsEnumerable()
select new
    {
        Class = r.Field<string>("Class").ToString(),
        RoomNum = r.Field<string>("RoomNum").ToString()
    };

接下来做什么? 我需要值5和10。有什么帮助吗?

只需添加Distinct()调用即可。 因此,匿名类型具有使用其所有属性的默认EqualsGetHashCode实现,您将仅获得不同的类和房间号对:

var stdDetails = (from r in DtTable.AsEnumerable()
                  select new {
                      Class = r.Field<string>("Class"),
                      RoomNum = r.Field<string>("RoomNum")
                  }).Distinct();

顺便说一句,您不需要在字段的值返回上调用ToString() 它将转换为通用参数的类型,即您的情况下为字符串。 而且看起来这些列中有整数值,所以请考虑使用r.Field<int>将其转换为整数

您可以按照链接中的说明使用“ Distinct()”函数

如何在多个字段中使用LINQ Distinct()

您必须选择所需的所有字段,然后应用不同的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM