Linq Join从一侧保留所有字段而无需明确列出

时间:2019-04-11 18:56:12

标签: c# linq lambda

我的代码需要两个数据库集的几个内部联接。一组很大(约20列),所有字段都相关。有没有一种方法可以输出没有明确列出所有字段的所有字段?

我的代码的简化版本(db是我的上下文):

var x = db.BigFact
        .join(db.Lookup1, l => l.Lookup1Id, r => r.Lookup1Id
             (l, r) => new {l.Col1, l.Col2 … l.Col20, r.OneName}
         )

...代表左侧所有字段的列表。重复编写它们很乏味,特别是考虑到存在代表“ BigFact”的强类型类时。

我正在寻找类似SQL语法的东西:

SELECT l.*, r.OneName
FROM BigFact as l
JOIN Lookup1 as r
ON   l.Lookup1Id = r.Lookup1Id

2 个答案:

答案 0 :(得分:3)

您可以这样做:

var x = db.BigFact
    .join(db.Lookup1, l => l.Lookup1Id, r => r.Lookup1Id
         (l, r) => new { Left = l, r.OneName}
     )

答案 1 :(得分:1)

  

输出所有字段而没有明确列出它们吗?

只需放入下面显示的原始项目,例如FullItem

(l, r) => new {l.Col1, l.Col2, FullItem = l, r.OneName}

这将创建一个具有Col1Col2OneNameFullItem字段的新实体。取消引用FullItem之类的项,例如FullItem.Col3甚至是FullItem.Col1