我有一个数据表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.任何帮助?
答案 0 :(得分:4)
只需添加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>
答案 1 :(得分:1)