提问人:Jeffery You 提问时间:3/30/2020 更新时间:3/30/2020 访问量:72
如何比较数组的指定类型元素?
How to compare specified type element of the array?
问:
我有一个扩展方法来判断数组/列表中是否存在项目。
我遇到了一个问题,如果 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 分配。
你可以帮我吗?
答: 暂无答案
评论