none
把Linq的查询结果(匿名类型)转换成c#的类 RRS feed

  • 问题

  • 我有一个Linq查询 返回 一个匿名类型,我想把查询结果转换成我定义好的类型。例如:

     

    static dynamic getEmployees()

    {

        SampleDB db = new SampleDB();

        var result = (from x in db.Employes

        select new

        {

            name = x.FirstName + " " + x.LastName,

            department = x.DepartmentId

        });

        return result;

    }

    我想转换的类如下:

    public class Emp

    {

        public string name { set; get; }

        public int department { set; get; }

    }

     

    我的代码。

     

    dynamic d = getEmployees();
    List<Emp> result = d.cast<Emp>();
    请问怎样把d 转为List<Emp>的集合啊?

    2016年2月13日 14:47

答案

  • 你好,

    Case 是一个扩展方法, 不能直接用在动态对象上。我建议先新建一个List<Emp>对象,然后循环动态对象,然后加到List<Emp>对象里。如下:

    dynamic d = getEmployees();
    var emps = new List<Emp>();
    foreach (var emp in d)
    {
        emps.Add(new Emp(){name = emp.name, department = emp.department};
    }

    Best regards,

    Cole Wu

    2016年2月14日 14:33
    版主