如何比较数组的指定类型元素?

How to compare specified type element of the array?

提问人:Jeffery You 提问时间:3/30/2020 更新时间:3/30/2020 访问量:72

问:

我有一个扩展方法来判断数组/列表中是否存在项目。

我遇到了一个问题,如果 T 是数组/列表,如何判断两个元素之间的相等性?

假设 和 是两个不同的元素。 这是我的方法:[1, 2][2, 1]

public static bool ContainsElement<T>(this IEnumerable<T> list, T target, out T matched)
{
    matched = default(T);

    if (typeof(T).IsCollection())
    {
        var targetElements = (target as IEnumerable).Cast<object>();
        foreach (var element in list)
        {
            var innerElements = (element as IEnumerable).Cast<object>();
            if (targetElements.Count() == innerElements.Count())
            {
                bool findDifference = false;
                for (int i = 0; i < targetElements.Count(); i++)
                {
                    if (/* How to compare the two element */)
                    {
                        findDifference = true;
                    }
                }

                if (!findDifference)
                {
                    matched = element;
                    return true;
                }
            }
            else
            {
                return false;
            }
        }
        return false;
    }
    else
    {
        foreach (var element in list)
        {
            if (EqualityComparer<T>.Default.Equals(element, target))
            {
                matched = element;
                return true;
            }
        }

        return false;
    }
}

我找不到知道如何T 数组的元素创建 EqualityComparer<>的方法。 我可以通过typeof(T)获取元素的类型。GetElementType(),但比较这两个元素似乎没有用。

顺便说一句,IsCollection 方法是我的扩展方法,用于检查 T 是数组还是从 IEnumerable 分配。

你可以帮我吗?

数组 比较 包含 相等性

评论


答: 暂无答案