C# 用于测试自定义对象的Custom System.Collections.Generic.Contains
如何重写自定义函数,或者如何编写自己的自定义函数来模拟自定义System.Collections.Generic.Contains,但只包含自定义对象某些公共属性中的因子 例如,如果我有一个具有属性名称和ID的自定义对象,我希望我的唯一值列表包含所有不同的名称。本例中的ID不相关C# 用于测试自定义对象的Custom System.Collections.Generic.Contains,c#,asp.net,C#,Asp.net,如何重写自定义函数,或者如何编写自己的自定义函数来模拟自定义System.Collections.Generic.Contains,但只包含自定义对象某些公共属性中的因子 例如,如果我有一个具有属性名称和ID的自定义对象,我希望我的唯一值列表包含所有不同的名称。本例中的ID不相关 List allvalues = new List ({0, "Burger"}, {1, "Pizza"}, {2, "burger"}) 我希望它返回一个列表,其中包含第一个对象0,汉堡和1,比萨饼。。。不考虑I
List allvalues = new List ({0, "Burger"}, {1, "Pizza"}, {2, "burger"})
我希望它返回一个列表,其中包含第一个对象0,汉堡和1,比萨饼。。。不考虑ID和名称的大小写。是使用收益率回报,如下所示:
private Collection<T> internalCollection;
public Collection<T> GetDistinctList<T>()
{
List<string> names = new List<string>();
foreach(T thisT in internalCollection)
if (!names.Contains(thisT.Name)
{
names.Add(thisT.Name);
yield return thisT;
}
}
私人收藏;
公共集合GetDistinctList()
{
列表名称=新列表();
foreach(内部集合中的此项)
如果(!names.Contains)(thisT.Name)
{
名称。添加(此名称);
收益率;
}
}
我不清楚如何包含(…)
与列表({0,“Burger”},{1,“Pizza”},{2,“Burger”})相关的内容。你能澄清一下吗?一般来说,你可能想看看提供一个自定义的Equals()
/GetHashCode()
,或IEquatable
,或IEqualityComparer
。或者,LINQ有很多方法可以简化此过程-您有权访问LINQ吗?我没有访问LINQ的权限:(.为了澄清,我需要能够在提供的列表中返回自定义对象的唯一列表。我从另一个教程中获取了包含的代码,并认为它可能适用于这种情况。