C# .net 3.5匿名foreach
我试图循环遍历返回匿名结果对象的函数的结果C# .net 3.5匿名foreach,c#,.net,foreach,anonymous-types,C#,.net,Foreach,Anonymous Types,我试图循环遍历返回匿名结果对象的函数的结果 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
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相同,只是添加了一些语法糖
- 在匿名类的范围内执行循环(大多数情况下,这是方法)
- 投射到对象并使用反射(缓慢且不太容易做到,除非您使用一些表达式树魔术)
- 转换为命名类并返回该类的实例
- (在C#4中)您可以创建一些动态类型魔术来实现类似的效果,但这实际上与选项2相同,只是添加了一些语法糖