2013-10-19 65 views
0

我有一個具有某些屬性的類。例如具有姓名,年齡,性別等級的人作爲屬性。從具有特定元素值的數組列表中檢索對象

人們填寫一張表格,其中包括他們的性別,這是一個下拉列表,他們提交併將其添加到數組列表中。

我需要的是一個功能,通過點擊一個按鈕來顯示所有選擇女性的人作爲性別。

有人可以幫我嗎?我已經嘗試過,現在搜索了幾天的正確答案,現在正在進行一些調整。

非常感謝!

奧拉夫

這是我的.cs代碼

public class Person 
{ 
    private string name; 
    private string artistname; 
    private string address; 
    private double number; 
    private double zip; 
    private string day; 
    private string gender; 

public Person(string name, string artistname, string address, double number, double zip, string day, string gender) 
    { 
     this.name = name; 
     this.artistname = artistname; 
     this.address = address; 
     this.number = number; 
     this.zip = zip; 
     this.day = day; 
     this.gender = gender; 
    } 

    public override string ToString() 
    { 
     string newPerson = name + " aka " + artistname + " lives on " + address + " " + number + " " + zip + " " + day + "Gender: " + gender; 
     return newPerson; 
    } 
} 

,這是我的.aspx代碼:

public partial class Index : System.Web.UI.Page 
{ 
    static ArrayList personArrayList; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      personArrayList = new ArrayList(); 
     } 
    } 

    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     Person p = new Person(txtName.Text, txtArtistName.Text, txtAddress.Text, Convert.ToDouble(txtNumber.Text), Convert.ToDouble(txtPostal.Text), Convert.ToString(dropdownDay.Text), Convert.ToString(dropdownGender.Text)); 
     personArrayList.Add(p); 
    } 

    protected void btnShowAll_Click(object sender, EventArgs e) 
    { 
     ListBoxShow.Items.Clear(); 
     for (int i = 0; i < personArrayList.Count; i++) 
     { 
      ListBoxShow.Items.Add(personArrayList[i].ToString()); 
     } 
    } 

    protected void btnShowGentle_Click(object sender, EventArgs e) 
    { 
     ListBoxShow.Items.Clear(); 

    } 

    protected void btnShowLadies_Click(object sender, EventArgs e) 
    { 
     ListBoxShow.Items.Clear(); 
     for (int i = 0; i < personArrayList.Count; i++) 
     { 
      if (personArrayList[i].gender = "Female") 
      { 

      } 
     } 
    } 
} 
+0

爲什麼不使用類似SQLite的東西,以便您可以使用內置的數據庫功能爲您做到這一點? –

+0

請檢查答案或給我們添加更多幫助 – Krekkon

回答

0

你感謝這樣的事情?

protected void btnShowGentle_Click(object sender, EventArgs e) 
{ 
    ListBoxShow.Items.Clear(); 
    for (int i = 0; i < personArrayList.Count; i++) 
    { 
     if(personArrayList[i].gender == "Male") 
      ListBoxShow.Items.Add(personArrayList[i].ToString()); 
    } 
} 

////Possible alternate 
//ListBoxShow.Items.Clear(); 
//ListBoxShow.Items.AddRange(personArrayList.Where(x => x.gender == "Male")); 
2

C#的方式是採取LINQ的使用查詢集合,因爲這樣的:

var persons = personArrayList.AsQueryable(); 
var females = persons.Where(p => p.gender.Equals("Female")); 
+0

我知道這是行不通的,因爲這是一個ArrayList,而不是一個列表,但我不知道你能翻譯完整的查詢,就像我使用它的格式? 「來自P人personArrayList其中P.Gender ==」女「選P;」 – user2888973

+0

在你的情況下,我的編譯器找不到p是什麼類型。所以它永遠不會得到p.gender ...可能是因爲我在這裏使用.net 3.5嗎? – user2888973

+0

你需要輸入你的數組列表:personArrayList = new ArrayList (); – user

相關問題