2011-08-31 17 views
0

我正在使用Linq来获取选择列表项的唯一成员。如何返回这个列表... 我有什么,现在是获取不同的SelectListItem

var queryResult = PatientList.Select(c => c).Distinct(); 
    PatientList = (List<SelectListItem>)queryResult; 

我收到第二行铸造错误。一个积极进取的年轻开发人员应该做什么?

回答

1

尝试

PatientList = queryResult.ToList(); 

您版本使用的铸造,在这种情况下是不可能的,因为查询结果是不是列表。 ToList基于它被调用的枚举构造一个新列表。它确实是这样的:

public static List<T> ToList<T>(this IEnumerable<T> collection) 
{ 
    return new List<T>(collection); 
} 

您必须确保,很明显,这PatientList元素SelectListItem类型,并注意Distinct()将返回不同的对象,而与不同领域的项目。也就是说,如果在PatientList中有两个独立构造的项目,其中Selected,TextValue属性相等,但由于调用Distinct(),您仍然有两个项目。

此外,使用Select(c => c)的原因是什么?它有效地注意到。

+0

我是Linq noob。我发现这是非常有用的,被说。 当我删除它,我得到一个编译器错误。 – SoftwareSavant

+0

看起来好像我没有得到不同的SelectListItems – SoftwareSavant

1

我不知道是什么类型的项目在你的清单,但你已经张贴你可以将列表

List<int> ages = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 }; 

    IEnumerable<int> distinctAges = ages.Distinct(); 

添加.ToList()如果你需要将其转换为一个列表

上直接调用 Distinct()