使用Linq Query实例化定义的对象

时间:2011-01-28 23:15:04

标签: c# linq

我知道您可以使用Linq实例化匿名类型,但我希望实例化一个我已定义的对象。每次我这样做,所有属性都返回默认值(null,0等)。有没有办法使这个工作?

我尝试过这样的事情:

ServiceDepartment[] serviceDepartments = (from d in departments
                                          orderby d.department_name
                                          select new ServiceDepartment
                                          {
                                              DepartmentID = d.department_id,
                                              DepartmentName = d.department_name
                                          }).ToArray();

2 个答案:

答案 0 :(得分:2)

这应该绝对正常。你的房产肯定有用吗?我建议你在它们上面放置断点,看看它们是否被调用,以及那时的值是什么。

编辑:好的,听起来这可能是一个亚音速问题。我建议你使用AsEnumerable

强制在进程中完成最后一部分
var query  = from d in departments
             orderby d.department_name 
             select new { id = d.department_id, name = d.department_name };

var serviceDepartments = query.AsEnuemrable()
                              .Select(x => new ServiceDepartment
                                      {
                                          DepartmentName = x.name,
                                          DepartmentID = x.id
                                      })
                              .ToArray();

答案 1 :(得分:0)

您的代码应该有效。 也许服务部门或其他地方的价值观正在发生变化。 如果你没弄清楚,请发布ServiceDepartment代码。