如何处理List <AnonymousType>的返回?

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关键字.但我不能在这里使用它.

Pet*_*nov 5

你可以回来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)

  • 指定类型:.ToList <dynamic>() (4认同)