2017-03-10 11 views
0

私は本当にこの問題に固執しています。人と経費という2つのクラスがあります。 PersonにMyNameという名前のプロパティとList Expenseというメンバーがあります。 Expenseクラスでは、MyFoodCostというプロパティがあります。 MyFoodCostの経費を入力/更新できるフォームがあります。フォームには、さらに人が1人いるため、リストパーソンがいます。特定の人のMyFoodCost費用を更新したいのであれば、どうしたらいいですか?この特定の人はMyFoodCostの新しい更新コストを持っていますか?C#リスト[別のクラスのアイテムを

public class Expense 
{ 
    private decimal MyFoodCost; 

    public Expense(decimal food) 
    { 
     MyFoodCost = food; 
    } 

    public decimal FoodCost 
    { 
     set 
     { 
      MyFoodCost = value; 
     } 
     get 
     { 
      return MyFoodCost; 
     } 
    } 
} 

public class Person 
{ 
    private string MyName; 
    public List<Expense> MyExpense; 

    public Person(string name, decimal food) 
    { 
     MyName = name; 
     MyExpense = new List<Expense>(); 
     MyExpense.Add(new Expense(food)); 
    } 

    public string FullName 
    { 
     set 
     { 
      this.MyName = value; 
     } 
     get 
     { 
      return this.MyName; 
     } 
    } 
} 

public partial class BudgetForm : Form 
{ 
    public List<Person> person; 

    public BudgetForm() 
    { 
     InitializeComponent(); 

     person = new List<Person>(); 
    } 

    private void buttonAddExpense_Click(object sender, EventArgs e) 
    { 
     decimal food = 0; 

     food = decimal.Parse(TextBoxFood.Text); 

     string name = ComboBoxPerson.SelectedItem.ToString(); 
     if(person.Count == 0) 
     { 
      person.Add(new Person(name, food)); 
     } 
     else 
     { 
      Person you = person.FirstOrDefault(x => x.FullName == name); 
      if (you == null) 
      { 
       person.Add(new Person(name, food)); 
      } 
      else 
      { 
       foreach (var item in person) 
       { 
        //check if person exists? 
        if (item.PersonName == name) 
        { 
         //person exists so update the food cost for him only. 
         //should i code to update the food 
         //or do somewhere else? 
        } 
       } 
      } 
     } 
    } 
} 

答えて

3

すでにPersonオブジェクトが見つかりました。私はあなたがその人の費用リストに新しい経費を追加したいと思う。このようなもの:

Person you = person.First(x => x.FullName == name); 
if (you == null) 
{ 
    person.Add(new Person(name, food)); 
} 
else 
{ 
    you.MyExpense.Add(new Expense(food)); 
} 
+0

あなたの答えは間違いありません。どうもありがとうございます。新しい食費をインデックス0にするために "you.MyExpense.Add(..)"の前に "you.MyExpense.Clear()"を追加します。それ以外の場合は、そこに古い食費を加えたリストに追加し続けます。 – Phil

+0

もう一度質問してください。 Personリストと経費をどのようにループしてBudgetFormに戻すことができますか? – Phil

+0

総経費を把握しているだけの場合、なぜそれが 'リスト 'である必要がありますか?ちょうどそれを 'decimal'にしてください。 – smead

関連する問題