结合两个LINQ查询,只返回结果不同

时间:2015-06-02 14:50:13

标签: c# linq linq-to-entities

我的查询是TableATableBTableCTableD等几个表的连接,最后我说{{1}使用它返回的tableA roecrds。 然后我又有另一个查询,其select tableA与第一个查询完全相同,但唯一不同的是,最后我这次说tables, joins and where clause

所以我的问题是,我可以将它们组合在一起,这样我就不必再运行两次查询了吗?

select tableB

2 个答案:

答案 0 :(得分:1)

创建一个具有tg,te等的类。

然后只查询一次:

var listOfThings = (from ta in this.Context.TableA
                          join tb in this.Context.TableB on ta.Id equals tb.Id
                          join tc in blah
                          join td in blah
                          join te in blah
                          join tf in blah
                          join tg in blah
                          where (someConditionIsTrueOk)
                          select new YourNewClass { Tg = tg, Te = te, and so on }).ToList();   

或者如Grant所说,如果你不需要结构,你可以选择一个匿名对象:

var query = (from ta in this.Context.TableA
             join tb in this.Context.TableB on ta.Id equals tb.Id
             ...
             ...
             where (someConditionIsTrueOk)
             select new {tg, te}).ToList();

答案 1 :(得分:1)

您可以在表格中选择多个表格或列,然后将它们组合成一个匿名类,然后即时创建:

var result = (from ta in this.Context.TableA
              join tb in this.Context.TableB on ta.Id equals tb.Id
              ...
              ...
              where (someConditionIsTrueOk)
              select new {ta, tb}).ToList();

var firstTableA = result[0].ta;
var firstTableB = result[0].tb;