不同列表<;string[]>;在c#中

本文关键字:gt string 列表 lt | 更新日期: 2023-09-27 17:59:19

我有一个字符串列表[]:

List<string[]> EIndex;

Eindex列表有4个string[]

INPUT:           {0,John},{1,Mike},{2,John},{3,Tim}
Expected OUTPUT: {0,John},{1,Mike},{3,Tim}

我想根据string[]的索引号1来区分数组,比如:

List<string[]> DistinctList = Eindex.Distinct(obj => obj[1]).ToList();

有什么建议吗?

不同列表<;string[]>;在c#中

Distinct采用IEqualityComparer<T>参数。您可以实现一个自定义比较器,将数组与第二个索引处的项相等:

public class SecondIndexComparer : IEqualityComparer<string[]>
{
    public bool Equals(string[] x, string[] y)
    {
        return x[1] == y[1];
    }
    public int GetHashCode(string[] obj)
    {
        return obj[1].GetHashCode();
    }
}

并像这样使用:

var distinctList = Eindex.Distinct(new SecondIndexComparer()).ToList();

请参阅此处的工作示例:https://dotnetfiddle.net/cpv1i7