2011-09-10 19 views
-1

私はEntity Frameworkを使用してasp.netアプリケーションを作成しました。この中で、レコードをリストに追加したいと思います。このためにはforeachループを使用する必要がありますが、常にすべてのレコードの最後のレコードデータのみを追加するため、同じデータが表示されます。ここで私のコードを貼り付けました。一度それを確認し、私が変更できる場所を案内してください。多くのレコードをリストに追加する方法<T>

 public List<CategoryItems> ListMenuCategory(int MenuId) 
    { 
     string str = string.Empty; 
     string strJSON = string.Empty; 
     List<CategoryItems> resultmenu; 
     resultmenu = new List<CategoryItems>(); 
     List<CategoryItems> Result; 
     Result = new List<CategoryItems>(); 
     bool check = true; 
     var objmenuCategory = from cat in objEntity.menucategories where cat.MenuId == MenuId && cat.Active == check select cat; 
     CategoryItems Categorylist = new CategoryItems(); 
     foreach (menucategory category in objmenuCategory) 
     { 
      Categorylist.CategoryName = category.CategoryName; 
      Categorylist.Description = category.Description; 
      int menuid = category.MenuCategoryId; 
      List<menuitem> menuitems = GetMenucategories(menuid); 
      foreach (var items in menuitems) 
      { 
       Categorylist.ItemName = items.ItemName; 
       Categorylist.Description = items.Description; 
       Categorylist.Price = (float)items.Price; 
       string Image = items.Picture; 
       Categorylist.Picture = "http://restaurantmanager.testshell.net/Images/" + Image; 
       Categorylist.Thumbnail = "http://restaurantmanager.testshell.net/Images/" + items.Thumbnail; 
       if (items.CreatedDate != null) 
       { 
        Categorylist.CreatedDate = (DateTime)items.CreatedDate; 
       } 

       if (items.ModifiedDate != null) 
       { 
        Categorylist.ModifiedDate = (DateTime)items.ModifiedDate; 
       } 
       Result.Add(Categorylist); 

      } 


      // Result.AddRange(menus); 


     } 
     return Result; 



     } 


    private List<menuitem> GetMenucategories(int p) 
     { 
     restaurantEntities objEntity1 = new restaurantEntities(); 
     var menuitems = from items in objEntity1.menuitems where items.MenuCategoryId == p select items; 
    return menuitems.ToList(); 
    } 
+0

これは 'ArrayList'ではなく、' List 'ですが、これを変更しました。 – Guffa

+0

は、実際に私は .... ... Victor

答えて

1

あなたは、ループの外でCategorylist項目を作成しているので、あなただけの、1つのアイテムを使用して別のデータでそれを充填し、その結果に何度も繰り返し、それを追加しています。

各反復が独自のオブジェクトを取得できるように、最も内側のループの内側にアイテムを作成する必要があります。


注:ChrisFも、あなたが何度もアイテムの同じセットを追加する結果を持っているループ、内部のAddRangeを呼び出すことを発見しました。 AddRangeに電話する必要はありません。Resultリストをスキップして、代わりにresultmenuを返すことができます。

+0

こんにちは一覧を表示するウル権利をGuffありがとうcategoryitem> – Victor

+0

... ...のように表示されます。これは、アイテムオブジェクトを内部ループに使用しているときに表示されていました.... – Victor

+0

@Victor :次に、 'CategoryItem'クラスが単一アイテムではなく' Items'コレクションを含むようにオブジェクトを変更する必要があります。次に、単一の 'CategoryItem'オブジェクトを作成し、' Item'コレクションにアイテムを追加することができます。 – Guffa

関連する問題