我知道您可以使用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();
答案 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代码。