我使用Linq只获取选择List项的唯一成员。我该如何返回此列表... 我现在拥有的是
var queryResult = PatientList.Select(c => c).Distinct();
PatientList = (List<SelectListItem>)queryResult;
我在第二行收到施法错误。一个有进取心的年轻开发者应该做些什么?
答案 0 :(得分:1)
尝试
PatientList = queryResult.ToList();
您的版本使用强制转换,在这种情况下这是不可能的,因为查询结果不是列表。 ToList
根据调用它的枚举构造一个新列表。它做了这样的事情:
public static List<T> ToList<T>(this IEnumerable<T> collection)
{
return new List<T>(collection);
}
显然,您必须确定PatientList
元素的类型为SelectListItem
,并且请注意Distinct()
将返回不同的OBJECTS,但不会返回具有不同字段的项目。也就是说,如果在PatientList
中你有两个独立构造的项目具有相同的Selected
,Text
和Value
属性,那么Distinct()
的结果仍然会有两个打电话。
此外,使用Select(c => c)
的原因是什么?它有效地注意到了。
答案 1 :(得分:1)
我不知道列表中的项目类型,但是您发布的内容可以直接在列表中调用Distinct()
List<int> ages = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 };
IEnumerable<int> distinctAges = ages.Distinct();
如果您需要将其转换为列表
,请添加.ToList()