2011-08-18 70 views
1

嗨我已經得到了一個對象列表,但是如何將它過濾到另一個列表?從列表中過濾對象與foreach

例:

public class Person 
{ 
    public string FirstName; 
    public string Language; 

    public Person (string FirstName, string Language) 
    { 
     this.FirstName = FirstName; 
     this.LastName = Language;    
    } 
} 

創建一個列表:

public List<Person> createDummyList() 
{ 
    List<Person> dummyList = new List<Person>(); 
    dummyList.Add(new Person("Per", "English")); 
    dummyList.Add(new Person("Linda", "Spanish")); 
} 

我怎樣才能得到一個列表只用語言,然後將其綁定到說一個下拉列表?香港專業教育學院tryed這樣的事情,但有一個空引用...

public void filterList(List<Person> ListToBeFiltered) 
{ 
    List<string> LanguageList = new List<string>(); 
    ListToBeFiltered.ForEach(delegate(Person P) 
    { 
     LanguageList.Add(P.Language); 
    }); 
    DropDown.datasource = LanguageList; 
    DropDown.databind(); 
} 

任何人都可以點我在正確的方向?

+0

LINQ的解決方案有我的偏好,但在這裏,你可能只是做了你的ListToBeFiltered一個簡單的foreach和語言添加到您的languageList。 – Carra

回答

4
IEnumerable<string> languageList = listToBeFiltered.Select(p=>p.Language) 
                .Distinct() 
                .ToList(); 
+3

你可能只是在打他的腦筋。 T先生似乎有一些基本的概念可以學習。像從方法中返回東西一樣。 –

+0

嘿,編譯器會盡快告訴他,只要他試圖編譯而不返回。 –

+0

heeh ..不介意「public void ...」它只是一個例子... –

0
public void filterList(List<Person> ListToBeFiltered) 
{ 
     DropDown.datasource = ListToBeFiltered.Select(p=>p.Language).Distinct(); 
     DropDown.databind(); 
} 
+0

感謝您的迅速回復......但是當我試圖將其綁定到下拉列表時,我仍然得到了「空引用」。 –

+0

哦...沒關係....只是弄亂了我的變量名.... –