我有一个项目清单.
问题是返回的项目(我无法控制)三次返回相同的项目.
因此,虽然列表中应该包含的实际内容是:
我明白了
如何清晰轻松地删除重复项?也许计算项目,除以3并删除从X到list.Count的任何内容?
Ant*_*ram 11
最快捷,最简单的方法是不删除项目,而是运行不同的查询
var distinctItems = list.Distinct();
Run Code Online (Sandbox Code Playgroud)
如果您必须拥有列表,则可以随时附加.ToList()到呼叫中.如果您必须继续使用相同的列表,那么您只需要迭代它并跟踪您已有的内容并删除任何重复项.
编辑: "但我正在上课"
如果你有一个给定类的列表,要使用Distinct,你需要(a)覆盖Equals和GetHashCode在你的类中,以便进行适当的相等比较.如果您无法访问源代码(或者根本不想因为某种原因而不想覆盖这些方法),那么您可以(b)提供IEqualityComparer<YourClass>实现作为Distinct方法的参数.这也允许您指定Equals和GetHashCode实现,而无需修改实际类的源.
public class MyObjectComparer : IEqualityComparer<MyObject>
{
public bool Equals(MyObject a, MyObject b)
{
// code to determine equality, usually based on one or more properties
}
public int GetHashCode(MyObject a)
{
// code to generate hash code, usually based on a property
}
}
// ...
var distinctItems = myList.Distinct(new MyObjectComparer());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |