2013-10-19 63 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

相关问题