Как добавить количество записей в список <T> - PullRequest
0 голосов
/ 10 сентября 2011

Я создал приложение asp.net, используя Entity Framework.В этом я хочу добавить записи в список.Для этого я должен использовать цикл 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 Ответ

1 голос
/ 10 сентября 2011

Вы создаете элемент Categorylist вне циклов, поэтому вы используете только один элемент, заполняя его различными данными и добавляя его снова и снова к результату.

Вам необходимо создатьэлемент внутри самого внутреннего цикла, так что каждая итерация получает свой собственный объект.


Примечание: ChrisF также заметил, что вы вызываете AddRange внутри цикла, в результате чего вы добавите тот женабор предметов снова и снова.Вам вообще не нужно звонить AddRange, вы можете просто полностью пропустить список Result и просто вернуть resultmenu.

...