c# 把IEnumerable<object[]>类型数据 进行去重根据某个字段
时间: 2023-12-21 13:04:10 浏览: 130
您可以使用LINQ来对IEnumerable<object[]>类型的数据进行去重。首先,您需要定义一个自定义的比较器,以便根据某个字段进行比较和去重。然后,您可以使用Distinct方法来应用这个比较器进行去重操作。以下是一个示例代码:
```csharp
public class MyComparer : IEqualityComparer<object[]>
{
private readonly string _fieldName;
public MyComparer(string fieldName)
{
_fieldName = fieldName;
}
public bool Equals(object[] x, object[] y)
{
if (x == null || y == null)
return false;
var index = Array.FindIndex(x, item => item.GetType().GetProperty(_fieldName) != null);
if (index < 0)
return false;
var xFieldValue = x[index].GetType().GetProperty(_fieldName).GetValue(x[index]);
var yFieldValue = y[index].GetType().GetProperty(_fieldName).GetValue(y[index]);
return xFieldValue.Equals(yFieldValue);
}
public int GetHashCode(object[] obj)
{
if (obj == null)
return 0;
var index = Array.FindIndex(obj, item => item.GetType().GetProperty(_fieldName) != null);
if (index < 0)
return obj.GetHashCode();
var fieldValue = obj[index].GetType().GetProperty(_fieldName).GetValue(obj[index]);
return fieldValue.GetHashCode();
}
}
```
使用示例:
```csharp
IEnumerable<object[]> data = // your data
string fieldName = "YourFieldName";
var comparer = new MyComparer(fieldName);
var distinctData = data.Distinct(comparer);
```
请将"YourFieldName"替换为您希望根据其进行去重的字段名称。这样,您就可以根据指定字段对IEnumerable<object[]>类型的数据进行去重操作了。
阅读全文