如何将多个记录添加到List <t> </t>中

时间:2011-09-10 11:19:43

标签: c# asp.net list c#-4.0

我使用Entity Framework创建了一个asp.net应用程序。在此我想将记录添加到列表中。为此,我必须使用foreach循环,但它总是只为所有记录添加最后的记录数据,这意味着它显示相同的数据。在这里,我粘贴了我的代码。请验证一次并指导我可以更改的位置。

     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();
     }

1 个答案:

答案 0 :(得分:1)

您正在循环之外创建Categorylist项,因此您只使用一个项目,用不同的数据填充它并将其一遍又一遍地添加到结果中。

您必须在最里面的循环内创建项目,以便每次迭代都有自己的对象。


注意:ChrisF还发现你在循环中调用AddRange,结果是你会一遍又一遍地添加同一组项目。您根本无需致电AddRange,您可以完全跳过Result列表,只需返回resultmenu