.net List<Dictionary<string,object>> 去重
时间: 2023-12-11 08:02:26 浏览: 213
可以使用 LINQ 的 Distinct 方法和自定义比较器来实现 List<Dictionary<string, object>> 的去重。
首先需要定义一个实现了 IEqualityComparer<Dictionary<string, object>> 接口的比较器类,然后在 Distinct 方法中传入该比较器即可。
示例代码:
```csharp
class DictionaryComparer : IEqualityComparer<Dictionary<string, object>>
{
public bool Equals(Dictionary<string, object> x, Dictionary<string, object> y)
{
if (x == null && y == null)
return true;
else if (x == null || y == null)
return false;
else
return x.SequenceEqual(y);
}
public int GetHashCode(Dictionary<string, object> obj)
{
if (obj == null)
return 0;
else
return obj.GetHashCode();
}
}
// 使用方法
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
// 添加元素
// 去重
List<Dictionary<string, object>> distinctList = list.Distinct(new DictionaryComparer()).ToList();
```
这里的 DictionaryComparer 类使用了 Dictionary 类型的 SequenceEqual 方法来比较两个字典是否相同,如果相同则认为它们相等。注意,这里只比较了字典中的值是否相等,而没有比较键是否相等。如果需要在比较时同时考虑键和值,可以修改比较器类的 Equals 方法。
阅读全文