C# 用于测试自定义对象的Custom System.Collections.Generic.Contains

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

如何重写自定义函数,或者如何编写自己的自定义函数来模拟自定义System.Collections.Generic.Contains,但只包含自定义对象某些公共属性中的因子

例如,如果我有一个具有属性名称和ID的自定义对象,我希望我的唯一值列表包含所有不同的名称。本例中的ID不相关

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的权限:(.为了澄清,我需要能够在提供的列表中返回自定义对象的唯一列表。我从另一个教程中获取了包含的代码,并认为它可能适用于这种情况。