0

我發現了大量關於如何使用存儲過程選擇多個結果集的信息,但沒有關於如何使用linq查詢來實現的大量信息。Linq To Entities,用一個查詢選擇多組數據

例如,我可以做的子查詢返回多張套的成績與類似

var query = (from school in context.Schools 
      where school.id == someId 
      select new 
      { 
       subSetA = (from student in context.Students 
          select student).ToList(), 
       subSetB = (from building in context.Buildings 
          select building).ToList(), 
      }).First(); 

query.subSetA; //Access subSetA 
query.subSetB; //Access subSetB 

,工作正常,但如果我只是想在不查詢對學校選擇兩個subSetA和subSetB表?我想選擇在一個查詢中發送到服務器的兩組單獨的數據。

有關如何用EF 6做到這一點的任何信息都會很棒。

+0

......你目前的'select'已經不包含'school'了嗎? – jjj

+0

@jjj你真的不明白這個問題嗎?如何在不查詢學校表的情況下選擇subSetA和subSetB?我會將其改寫爲不使用「選擇」。 – Slight

+0

ohhh,你想用單個查詢加載不相關的數據集,而你現在正在使用針對'Schools'的查詢作爲虛擬查詢。聽起來像EF沒有做的事情,所以解決方案可能最終會成爲黑客...... – jjj

回答

0

嗯,我敢肯定有很多方法可以做到這一點,但如果你想避免引入第三DbSet混進去......

var query = (from s in context.Students.Take(1) 
      select new 
      { 
       subSetA = context.Students.ToList(), 
       subSetB = context.Buildings.ToList(), 
      }) 

然後,您可以使用query.ToList()或可能使用query.Load()context.Students.Local等工作。

+0

這很好,但你基本上正在做我在做的事情,除了使用「學生」作爲虛擬桌子而不是「學校」。這不是我沒有考慮過的,我只是想知道是否有更好的方法來做到這一點。 – Slight