2008-12-08 67 views
0

如何重寫或是否有方法編寫自己的自定義函數來模擬自定義System.Collections.Generic.Contains,但僅限某些公共屬性中的某個因素自定義對象?自定義System.Collections.Generic.Contains用於測試自定義對象

例如,如果我有一個具有屬性名稱和ID的自定義對象,我希望我的唯一值列表包含所有的DISTINCT名稱。這種情況下的ID是不相關的。

List allvalues = new List ({0, "Burger"}, {1, "Pizza"}, {2, "burger"}) 

我想這回我其中包含0,漢堡和1,比薩的第一個對象列表...不論ID和姓名的情況。

+0

我無法訪問LINQ :(爲了澄清,我需要能夠在提供的列表中返回自定義對象的唯一列表。我從另一個教程中獲取了代碼Contains,並認爲它可能適用於這種情況。 – TimLeung 2008-12-09 13:56:23

回答

0

是使用yield回報爲:

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; 
      } 
    } 
0

我很不清楚Contains(...)如何與List ({0, "Burger"}, {1, "Pizza"}, {2, "burger"})東西。你能澄清嗎?一般來說,您可能需要考慮提供自定義的Equals()/GetHashCode()IEquatable<T>IEqualityComparer<T>。另外,LINQ有很多方法可以使這一點變得簡單 - 您是否有權訪問LINQ?