使用LINQ选择具有不同列值的行

时间:2010-09-07 15:28:14

标签: c# .net linq sharepoint

我有一个SharePoint列表项的通用列表(列出员工)

SharePoint列表包含两列,“员工姓名”和“员工指定”

我想获得一个包含不同“Employee Designation”列值的对象List。

如何使用LINQ执行此操作?

这对我没用:

 var designations = from SPListItem employee in employees
                    select new {Designation = employee["Employee Designation"].ToString().Distinct()};

2 个答案:

答案 0 :(得分:7)

如果您只检索该列的字符串值,则可以通过选择字符串(而不是包含字符串属性的对象)来避免编写相等比较器。

var designations = (from SPListItem employee in employees
                    select employee["Employee Designation"].ToString())
                   .Distinct()
                   .ToList();

答案 1 :(得分:2)

您必须在序列上使用Distinct方法,并且需要提供IEqualityComparer<T>的自定义实现,因此您需要为要创建的对象提供显式类。

var designations = (from SPListItem employee in employees
                   select new 
                   {
                     Designation = employee["Employee Designation"].ToString()
                   }).Distinct(comparer);