Не удается преобразовать тип '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;