2013-10-19 3 views
0

일부 특성이있는 클래스가 있습니다. 예를 들어 이름, 나이, 성별 등을 속성으로 갖는 클래스 사용자.특정 요소 값을 가진 arraylist에서 개체 검색

사람들은 양식을 작성하고 드롭 다운 목록 인 성별과 함께 양식을 작성하여 제출하고 그 사람이 arraylist에 추가됩니다.

내가 필요한 것은 성별로 여성을 선택한 모든 사람들을 표시하는 버튼을 클릭하는 기능입니다.

누군가 저를 도와 줄 수 있습니까? 나는 지금 일에 대한 올바른 답을 찾으려고 노력했고 지금은 조금 싫증나고있다.

많은 감사 !!!

올라프

이 내 .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이고 List 이 아니기 때문에 작동하지 않습니다.하지만이 형식으로 사용하는 것처럼 전체 쿼리를 번역 할 수 있습니까? "personArrayList의 Person P에서 P.Gender =="Female "가 P를 선택하고" 귀하의 경우에 – user2888973

+0

내 컴파일러는 p 유형을 찾을 수 없습니다. 그래서 그것은 p.gender에 갈 수 없다 ... 내가 여기에 .net 3.5를 사용하기 때문에 그것이 될 수 있을까? – user2888973

+0

arraylist를 입력해야합니다. personArrayList = new ArrayList (); – user

2

나는 이런 식으로 뭔가 트릭을 할해야한다고 생각

using System.Linq; 
var females = from Person P in personArrayList where P.Gender == "Female" select P; 

[편집] 이 질문에 대한 질문이 있으니 Plain ArrayList Linq c# 2 syntaxes (need a conversion) 당신에게 유용 할 수 있습니다.

관련 문제