2014-02-27 35 views
3

考虑以下几点:你如何包含第一个表中的所有字段加入,还有剩余的字段?

var item = (from table1 in Entity.table1 
          join table2 in Entity.table2 
          on table1.ID equals table2.fkId 
          where table1.ID == TheID 
select table1 
) 

我怎样才能返回所有字段从table1,然后从table2再增加一些,而无需显式定义的所有列是这样的:

where table1.ID == TheID 
    select new 
     { 
     table1.field, 
     table1.field2, 
     etc, etc,etc,etc, 
     table2.field1 

     } 
+0

你不能,你需要新的类,它既可以兼容......也可以做最大限度的创建新的{table1,table2}并访问属性mc.table1.field1 –

+0

问题是第一类有一个大量的字段,我不希望那些在我的代码中定义的,因为它可能会在以后增加维护问题。 –

+0

因为它们有完全不同的含义,所以我将“结果”更改为“字段”。如果这不是一个正确的编辑,你能扩展你对'结果'的含义吗? –

回答

1

如何返回table1中的所有字段,然后从 表2中添加几个而不必明确定义所有列

你不能。应指定匿名对象的所有属性。但是你可以从表1和某些字段从表2返回整个实例:

select new 
    { 
    table1 
    table2.field1 
    } 

然后,从第一个表中的所有属性将可以通过x.table1.field2,你不会手动一一列举。

1

可以代替

where table1.ID == TheID 
select new 
    { 
    table1, 
    table2 

    } 

,并获得该匿名类的字段由myItem.table1.field

保留两个表1,表2然而,如果你想通过一级属性来访问,您可以创建dynamic类,该类可以通过从一个或另一个表中反射来返回适当的值,或者如果要在UI上显示表格,则实现ICustomTypeDescriptor interface(Winform和WPF网格都识别此接口)

相关问题