0

コード:

List<Expense> exp = new List<Expense>();
List<Budget> bud = new List<Budget>();

     bud.Add(new Budget()
     {
         sal_tp = 0,
         sal_fos_veri = 1
     });


     exp.Add(new Expense()
       {
             sal_tp =2,                                             
             sal_fos_veri = 3                            
       });
bud.Add(new Budget()
     {
         sal_tp = 4,
         sal_fos_veri = 5
     });


     exp.Add(new Expense()
       {
             sal_tp =6,                                             
             sal_fos_veri = 7                            
       });


bud.Add(new Budget()
     {
         sal_tp = 8,
         sal_fos_veri = 9
     });


     exp.Add(new Expense()
       {
             sal_tp =10,                                             
             sal_fos_veri = 11                            
       });


bud.Add(new Budget()
     {
         sal_tp = 12,
         sal_fos_veri = 13
     });


     exp.Add(new Expense()
       {
             sal_tp =14,                                             
             sal_fos_veri = 15                            
       });


bud.Add(new Budget()
     {
         sal_tp = 16,
         sal_fos_veri = 17
     });


     exp.Add(new Expense()
       {
             sal_tp =18,                                             
             sal_fos_veri = 19                            
       });


bud.Add(new Budget()
     {
         sal_tp = 20,
         sal_fos_veri = 21
     });


     exp.Add(new Expense()
       {
             sal_tp =22,                                             
             sal_fos_veri = 23                            
       });


bud.Add(new Budget()
     {
         sal_tp = 24,
         sal_fos_veri = 25
     });


     exp.Add(new Expense()
       {
             sal_tp =26,                                             
             sal_fos_veri = 27                            
       });

部分授業終了

public class Expense
                    {
                        public int sal_tp { get; set; }
                        public int sal_fos_veri { get; set; }
                    }
            public class Budget
                {
                    public int sal_tp { get; set; }
                    public int sal_fos_veri { get; set; }
                  }

次のような出力が期待されます:

* 0 2 1 4 3 5 ....など.... *

一度に両方のリストを反復する方法は? 私はこのようなことを試しました

for(int i=0;i<bud.Count;i++)
{
                       Expense explist=exp[i];
                       Budget budlist=bud[i];
                       Response.Write(budlist.sal_tp);
                       Response.Write(explist.sal_tp);
                       Response.Write(budlist.sal_fos_veri);
                       Response.Write(explist.sal_fos_veri);
 }

問題:これによりコードが増加します。その「budlist」も繰り返し処理したいと思います。私はJavaでこのようなことをしていたように

for(int i=0;i<data.size();i++)
       {
          for(int j=0;j<((ArrayList)data.get(i)).size();j++)
           {
               out.print("<td>");
               out.print(((ArrayList)data.get(i)).get(j));
               out.print("</td>");
               out.print("<td>"+((ArrayList)exp_data.get(i)).get(j)+"</td>");
           }
           out.println("</tr>");
       }

そのようなことは可能ですか?

4

1 に答える 1

1

一般的な抽象化を次のように抽出してみてください

public interface  IMoneyTransaction
{
    int sal_tp { get; set; }
    int sal_fos_veri { get; set; }
}

クラス宣言は少し変更されます。

public class Expense : IMoneyTransaction
{
    public int sal_tp { get; set; }
    public int sal_fos_veri { get; set; }
}

public class Budget : IMoneyTransaction
{
    public int sal_tp { get; set; }
    public int sal_fos_veri { get; set; }
}

リストを次のように入力します。

var exp = new List<IMoneyTransaction>{
    new Budget
    {
        sal_tp = 0,
        sal_fos_veri = 1
    }};

var bud = new List<IMoneyTransaction>{
    new Expense
    {
        sal_tp =2,                                             
        sal_fos_veri = 3                            
    }};

Union1 つの共通インターフェイスを使用してデータをマージし、反復処理できるようになりました

var allItems = exp.Union(bud).ToArray();

for(int i = 0; i < allItems.Length; i++)
{
    Console.WriteLine (allItems[i].sal_fos_veri);
    Console.WriteLine (allItems[i].sal_tp);
}
于 2013-02-05T10:07:21.353 に答える