.net 3.5 анонимный запрос
-
08-07-2019 - |
Вопрос
Я пытаюсь перебрать результаты функции, которая возвращает анонимный объект results.
public static object getLogoNav()
{
XDocument loaded = XDocument.Load(HttpContext.Current.Request.MapPath("~/App_Data/LOGO_NAV_LINKS.xml"));
var query = from x in loaded.Elements().Elements()
select new
{
Name = x.FirstAttribute.Value,
Value = x.Value
};
return query;
}
кодовая страница:
var results = Common.getLogoNav();
foreach(var nav in results) {
string test = nav.Name;
}
Решение
У вас не может быть анонимного класса в качестве возвращаемого типа в C # 3 (и 4, если уж на то пошло), и вы не можете привести объект к анонимному типу.У вас есть три варианта:
- Выполнение цикла в рамках анонимного класса (в большинстве случаев это метод)
- Приведение к объекту и использование отражения (медленное и не очень простое в выполнении, если вы не примените какую-нибудь магию дерева выражений)
- Преобразование в именованный класс и возврат его экземпляра.
- (В C # 4) вы можете создать некоторую магию динамического типа для достижения аналогичного эффекта, но это было бы действительно то же самое, что и вариант 2 с некоторым синтаксическим сахаром.
Другие советы
Джон Скит написал запись о возврате анонимного типа. Я надеюсь, что вы не используете его.
Не связан с StackOverflow