![](/img/trans.png)
[英]DataTable.AsEnumerable().Where() vs DataTable.Select()
[英]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
如您所见,它只包含主题列的不同数据。
现在,我想获取class
和RoomNum
列的值。 由于所有行的值都相同,因此我正在使用以下代码-
var stdDetails = from r in DtTable.AsEnumerable()
select new
{
Class = r.Field<string>("Class").ToString(),
RoomNum = r.Field<string>("RoomNum").ToString()
};
接下来做什么? 我需要值5和10。有什么帮助吗?
只需添加Distinct()
调用即可。 因此,匿名类型具有使用其所有属性的默认Equals
和GetHashCode
实现,您将仅获得不同的类和房间号对:
var stdDetails = (from r in DtTable.AsEnumerable()
select new {
Class = r.Field<string>("Class"),
RoomNum = r.Field<string>("RoomNum")
}).Distinct();
顺便说一句,您不需要在字段的值返回上调用ToString()
。 它将转换为通用参数的类型,即您的情况下为字符串。 而且看起来这些列中有整数值,所以请考虑使用r.Field<int>
将其转换为整数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.