如何在第一个表中包含加入的所有字段,还有一些来自剩余的字段?

时间:2014-02-27 13:38:02

标签: c# linq

鉴于以下内容:

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

      }

2 个答案:

答案 0 :(得分:1)

  

如何从table1返回所有字段,然后从中添加一些字段   table2无需显式定义所有列

你做不到。应指定匿名对象的所有属性。但是你可以从table1返回整个实例,从table2返回一些字段:

  select new
  {
     table1
     table2.field1
  }

然后第一个表中的所有属性都将通过x.table1.field2提供,您不会手动将它们全部列出。

答案 1 :(得分:1)

您可以保留table1和table2

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

  }

并按myItem.table1.field

访问此匿名类的字段

如果您想通过第一级属性访问,则可以创建dynamic类,通过从一个或另一个表反射返回正确的值,或实现{{3}如果你想在UI上显示表格(Winform和WPF网格都识别这个界面)