2017-09-13 16 views
-3

にリスト を作成します。 私はこのようなクラスを作成しようとしていますC#の

public class person 
{ 
    public string name { get; set;} 
    public int age { get; set;} 
} 

と基本的にクラスのリストでクラスを作成する上:私の目標はある

public class PersonList : List<person> 
{ 
    public PersonList() 
    { 
    } 

    public int getAge(string name) 
    { 
     foreach(string s n this) 
     { 
      if (s == name) 
       return age; 
     } 
    } 

GetAge()という名前の単純な関数を持っているので、年齢はという名前で取得できます。 リストを作成することは可能ですが、モジュラーコードが必要です。

+6

下のコンソールコードを繰り返し、そして、あなたはどのような問題を持っていない場合には年齢のリストを得るのだろうか?コードは大丈夫だと思われます。 –

+1

あなたは何をしたいですか? –

+2

getAgeのループを文字列として反復することはできません。リストの型は文字列ではなく、その人です。 – Jay

答えて

2
public int getAge(string name) 
{ 
    return this.First(x=>x.name==name).age;  
} 

これは、人が見つからないとエラーになります。

戻るに-1人が見つからない場合:

public int getAge(string name) 
{ 
    return this.FirstOrDefault(x=>x.name==name)?.age??-1;  
} 
0

私はあなたが任意のサンプルでは、​​最初の1つを得ることになるので、名前がリストに繰り返すことができることを考慮しなければならないと思います以下の2つのオプションがあります。

public class person 
    { 
     public string name { get; set; } 
     public int age { get; set; } 
    } 
    public class PersonList : List<person> 
    { 
     public int getAge(string name) 
     { 
      return this.FirstOrDefault(x => x.name == name)?.age ?? -1; 
     } 
     public int[] getAge2(string name) 
     { 
      return this.Where(x => x.name == name).Select(x=>x.age).ToArray(); 
     } 
    } 

そして、あなたが名前を、

static void Main(string[] args) 
     { 
      PersonList listOfPerson = new PersonList(); 
      listOfPerson.Add(new person() { age = 25, name = "jhon" }); 
      listOfPerson.Add(new person() { age = 26, name = "jhon" }); 
      listOfPerson.Add(new person() { age = 21, name = "homer" }); 
      listOfPerson.Add(new person() { age = 22, name = "bill" }); 
      listOfPerson.Add(new person() { age = 27, name = "jhon" }); 
      listOfPerson.Add(new person() { age = 22, name = "andrew" }); 

      foreach (var item in listOfPerson.getAge2("jhond")) 
      { 
       Console.WriteLine(item); 
      } 
      Console.ReadLine(); 
     } 
関連する問題