C#+ LINQ + ADO.NET EF,连接2个表并返回所有内容,而无需手动指定所有字段

时间:2009-07-13 16:44:23

标签: c# linq entity-framework ado.net

我在ADO.NET Entity Framework上有一个简单的LINQ查询,如下所示

var result = 
  from itemA in TableA
  join itemB in TableB on itemA.ID = itemB.ID
  select ??????

我正在尝试从itemAitemB中选择所有内容,而不指定所有TableATableB

任何想法???

2 个答案:

答案 0 :(得分:6)

这是你需要的吗?

    var result = from itemA in TableA 
                 join itemB in TableB on itemA.ID equals itemB.ID
                 select new { itemA, itemB };

或者,您可以声明一个结果类,帮助您构建结果对象而不指定所有字段:

    class ItemAB
    {
        public ItemAB(ItemA a, ItemB b)
        {
            FieldA1 = a.FieldA1;
            FieldA2 = a.FieldA2;
            FieldB1 = b.FieldB1;
            FieldB2 = b.FieldB2;

        }
        public int FieldA1 { get; private set; }
        public int FieldA2 { get; private set; }
        public int FieldB1 { get; private set; }
        public int FieldB2 { get; private set; }
    }

    var result = from itemA in TableA 
                 join itemB in TableB on itemA.ID equals itemB.ID
                 select new ItemAB(itemA, itemB);

答案 1 :(得分:2)

从您的链接查询看起来您有2个表与一对一的关系。

如果是这样,那么执行此操作的方法是配置实体模型,以便将两个表合并为一个实体。详情请见:

http://blogs.msdn.com/simonince/archive/2009/03/23/mapping-two-tables-to-one-entity-in-the-entity-framework.aspx