我使用Linq仅获取选择列表项的唯一成员。如何返回此列表...我现在所拥有的是
var queryResult = PatientList.Select(c => c).Distinct();
PatientList = (List<SelectListItem>)queryResult;我在第二行收到了一个强制转换错误。一个有进取心的年轻开发人员应该做什么?
发布于 2011-08-31 20:21:58
试一试
PatientList = queryResult.ToList();您的版本使用了强制转换,这在本例中是不可能的,因为查询结果不是列表。ToList根据调用它所针对的枚举对象构造一个新的列表。它是这样做的:
public static List<T> ToList<T>(this IEnumerable<T> collection)
{
return new List<T>(collection);
}显然,您必须确保PatientList元素的类型为SelectListItem,并且要知道Distinct()将返回不同的对象,但不会返回具有不同字段的项。也就是说,如果在PatientList中有两个独立构造的条目,它们具有相同的Selected、Text和Value属性,那么由于Distinct()调用,仍然会有两个条目。
另外,使用Select(c => c)的原因是什么?它实际上什么也不做。
发布于 2011-08-31 20:28:27
我不知道你列表中的项目是什么类型的,但是对于你发布的内容,你可以直接在列表上调用Distinct()
List<int> ages = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 };
IEnumerable<int> distinctAges = ages.Distinct();如果需要将其转换为列表,则添加.ToList()
https://stackoverflow.com/questions/7256824
复制相似问题