Не удается преобразовать тип 'AnonymousType#1'
знаете ли вы, как исправить эту ошибку? Это показывает ошибку в этой строке " foreach (int s in itemColl)"
что я должен делать?
Ошибка 1 не удается преобразовать тип "AnonymousType#1" в 'int' C:UsersRafalDesktopMVC ksiązkamoj projektsklepспортивный магазин.WebUIКонтроллерыProductController.cs 37 21 спортивный магазин.Web-интерфейс
var itemColl = from p in re.Kategorie
               where p.Nazwa == category
               select new
               {
                   p.Id_kat
               };
                foreach (int s in itemColl)
                {
                    Console.WriteLine(s);
                }
            5 ответов
выбор itemColl С new ключевое слово, задание анонимного типа, вы не можете применить foreach петли с int тип. Ваш текущий запрос возвращает что-то вроде IEnumerable<AnonymousType>
вместо этого вы можете сделать:
var itemColl = from p in re.Kategorie
               where p.Nazwa == category
               select p.Id_Kat;
возвращает IEnumerable<int> и что вы можете использовать в текущем цикле foreach. 
но если вы хотите использовать текущий запрос с выбором анонимного типа, вам нужно изменить цикл foreach с помощью неявный тип var, и поскольку ваш текущий запрос возвращает объект анонимного типа, вы можете выбрать Id_kat из объекта. Что-то вроде того. 
foreach (var s in itemColl)
{
    Console.WriteLine(s.Id_kat);
}
IMO, второй подход не рекомендуется, потому что вы просто возвращаете int тип завернутой в анонимный тип. Лучше, если вы можете изменить свой запрос на return IEnumerable<int>
вам просто нужно изменить select на:
var itemColl = from p in re.Kategorie 
    where p.Nazwa == category 
    select p.Id_kat;
Это создаст IEnumerable<int> что вы пытаетесь использовать в foreach.
на select new { p.Id_Kat } создает новый Анонимного Типа что является самым простым способом сказать, что это новый класс, как это:
class AnonymousType#1
{
    public int Id_Kat {get; set;}
}
var itemColl = from p in re.Kategorie
               where p.Nazwa == category
               //This is Anonymous Type
               select new
               {
                  //Anonymous type's attribute(s) go(es) here 
                  IntItem = p.Id_kat
               };
               foreach (var s in itemColl)
               {
                  Console.WriteLine(s.IntItem);
               }
Ну, вы можете вернуть реальное (int)-значение вместо анонимного linq-result
var itemColl = from p in re.Kategorie
    where p.Nazwa == category
    select p.Id_Kat;