2014-02-20 53 views
0
var c = from p in db.Testings 
     where p.id == Convert.ToInt32(k) 
     select new{p.ItemId};` 

上面的LINQ被返回包含不同ItemIds行的多個量。 現在,我試圖從包含所有那些ItemIds的問題表中檢索所有行,我在上面的linq中返回。正如所料,下面的代碼不起作用。任何人都可以幫助我用這個邏輯或糾正我的代碼,如果這是一個小小的邏輯錯誤。如何檢索從表中的數據「A」基於表「b」的不同的值

var cfk = from p in db.Questions 
      where p.ItemId == Convert.ToInt32(c) 
      select p; 

GridView4.DataSource = cfk; 
GridView4.DataBind(); 
+0

您需要'連接'表格。 –

+0

難道還有其他方法嗎? –

+0

我不是說再做一張桌子。我的意思是'加入'。這是SQL中用來表示您正在從兩個表中讀取數據的術語。請閱讀此處:http://www.dotnet-tricks.com/Tutorial/linq/UXPF181012-SQL-Joins-with-C –

回答

0

喜歡的東西:

   var cfk = from p in db.Questions 
       where c.Contains(p.ItemId) 
       select p; 
0

根據你選擇的'cfk'作爲第二個變量名,我猜你已經設置了你的數據庫,使得Questions.ItemId是一個外鍵進入Testings,其中Testings.ItemId是Testings and Testings的主鍵.id是一些其他非關鍵列。

如果是這樣的話,你可以說:

var cfk = db.Testings 
      .Where(t => t.id == k) 
      .SelectMany(t => t.Questions); 

var cfk = db.Questions 
      .Where(t => t.Testing.id == k); 

如果你需要做一個加入的人如建議任何外鍵關係

var cfk = db.Testings 
      .Where(t => t.id == k) 
      .Join(db.Questions, t => t.ItemId, q => q.ItemId, (t, q) => q); 
相關問題