2011-12-29 90 views
0

我有两个不同的实体属性类的列表,获得具有两个不同的表

class Department 
{ 
    int DepID; 
    string DepName; 
} 

class Emp 
{ 
    int Empid; 
    string Empname; 
    int Empage; 
    int EmpDep; //id of department 
} 

,我使用Linq中的联接得到的Emp名单与DepName,我想直接分配这个值给datagrid。

所以我的问题是如何获得数据转换为列表和什么将是这个列表的对象类型。

谢谢

回答

1

喜欢的东西

employees.Join(departments, e => e.EmpDep, d => d.DepId, 
    (e,d) => new EmpView { EmpName = e.EmpName, DepName = d.DepName }).ToList() 

,我使用类型EmpView绑定到网格。 (这样,你可以创建一个产生EmpViews的方法,以及另一个方法 - 或组件 - 执行数据绑定,分离关注点)。

+0

做了一个小修改,因为我把匿名类型的语法和对象初始值设定项混合在一起。 – 2012-01-02 10:40:36

2

结果类型将是一个匿名类型。我不认为你可以直接将结果列表转换为特定类型的列表,除非你明确定义了该类型。

因此,如果您要在查询结束处放置.ToList(),您将在var类型对象中获得anooymous类型的列表。

为什么你需要这里的强类型?只需将数据网格项目源等于列出你从LINQ

得到
+0

感谢哈里斯,但有什么办法我可以得到清单中的对象包含这两个类的属性的列表? – 2011-12-29 11:13:18

+0

是的,你可以通过在LINQ查询中使用select语句。类似这样的'select new {instance1.Property1,instance2.Property2等等;' – 2011-12-29 12:02:27

相关问题