Jag*_*ggu 0 c# linq anonymous-types
可能重复:
LINQ to SQL:返回匿名类型?
这是我的代码:
class B
{
public int age { get; set; }
public string name { get; set; }
}
class Program
{
static List<whatshouldIwritehere> GetList()
{
List<B> list = new List<B>() {
new B(){ age = 10, name = "jaagu" },
new B(){ age = 20, name = "juggu" },
new B(){ age = 30, name = "jockey" },
new B(){ age = 40, name = "jaggu" },
};
return (from item in list
select new { MyAge = item.age, MyName = item.name }).ToList();
}
static void Main(string[] args)
{
Console.Read();
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我应该在函数GetList()的返回类型中写什么?我知道查询创建了一个匿名类,我希望跨函数使用该类.如果我使用MyAge和MyName创建一个自定义类,那么很容易在返回类型中给出它.但是,还有其他出路吗?如果这是相同的功能我会使用var关键字.但我不能在这里使用它.
你可以回来List<object>或List<dynamic>.
如果您返回,object那么除了反射之外,您将无法访问这些属性.如果返回dynamic,则可以访问属性,但是会丢失编译时检查.(因此输入属性名称的拼写错误会导致运行时异常).
编辑: 您需要为ToList函数明确指定类型:
static List<dynamic> GetList()
{
List<B> list = new List<B>() {
new B(){ age = 10, name = "jaagu" },
new B(){ age = 20, name = "juggu" },
new B(){ age = 30, name = "jockey" },
new B(){ age = 40, name = "jaggu" },
};
return (from item in list
select new { MyAge = item.age, MyName = item.name }).ToList<dynamic>();
}
Run Code Online (Sandbox Code Playgroud)