繁体   English   中英

使用Linq列表时没有获得不同的项目?

[英]Not getting Distinct Items when using Linq to List?

这是我试图获得一个独特的项目列表...

    var queryResults = PatientList.Distinct();
    PatientList = queryResults.ToList<SelectListItem>();

出于某种原因,我在这里没有得到明确的清单。

采用

var queryResults = PatientList.GroupBy(x=>x.Id).Select(x=>x.FirstOrDefault())
    PatientList = queryResults.ToList<SelectListItem>();

你可以随时试试

 PatientList = PatientList.GroupBy(x=>x.Id).Select(x=>x.FirstOrDefault()).ToList<SelectListItem>();

它将根据您分组的任何内容为您提供截然不同的结果

查看http://blog.jordanterrell.com/post/LINQ-Distinct()-does-not-work-as-expected.aspx

还有一个问题需要参考: 用LINQ返回一个独特的IQueryable?

不确定您的PatientList包含哪些项目,但我猜您必须在自定义对象上实现IEquatable。

这之前已经解决了:明确不使用LINQ to Objects

您的SelectListItem类需要重写EqualsGetHashCode (并且可选地实现IEquatable<SelectListItem> )。 否则,具有相同值的不同实例将被视为不同。

另一种选择是实现IEqualityComparer<SelectListItem>并将其作为第二个参数传递给Distinct

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM