2012-01-15 60 views
0

我是LINQ的新手,有人可以指導我如何在Linq中轉換以下SQL查詢。第一個SQL到Linq轉換

Select tblIns.InsID, tblProg.ProgName 
from tblIns, tblProg 
Where tblIns.InsID = tblProg.InsID 

我的MVC2項目的工作,我的datacontext和Reposetories,請找到下面的代碼,我需要這個查詢:

public IQueryable<tblInstitute> InsRepeater() 
{ 
    return from Inst in _db.tblInstitutes 
      from Progs in _db.tblPrograms 
      Where Inst.InstituteID = Progs.InstituteID 
      Select Inst.InstituteID, Progs.ProgramName 
} 

回答

3

你首先需要的是模擬數據上下文的數據庫。以下是linq to sql如何做到這一點的一個例子。您也可以使用實體框架(EF)或任何其他提供者來完成此任務。

一旦你的表中創建,查詢,然後轉換非常直截了當:

var results = from insEntity in tablIns 
       from progEntity in tablProg 
       where insEntity.InsID equals progEntity.InsID 
       select new { insEntity.InsID, progEntity.ProgName }; 

隨着你問這個問題,因爲我認爲將是有益的,這是一樣多。將來最好寫下問題,解釋你正在嘗試做什麼,你嘗試了什麼,然後解釋你被困住的地方。這個問題應該足夠具體,讓你剛好在下一個峯值。


根據您的編輯:您有需求的查詢有小寫whereselect,它需要終止與分號的聲明(假設它是)。然後你選擇語句需要選擇一個新的對象。結果會是這個樣子:

public IQueryable<tblInstitute> InsRepeater() 
{ 
    return from Inst in _db.tblInstitutes 
      from Progs in _db.tblPrograms 
      where Inst.InstituteID equals Progs.InstituteID 
      select Inst; // for the current method header 
      //select new { Inst.InstituteID, Progs.ProgramName }; // to use this one you'll have to create a new type with the properties you want to return 
} 
+0

此類型的評論應該是您的原始文章的編輯。我會爲你做這件事 – 2012-01-15 14:35:08

+0

這實際上會起作用嗎?你的方法聲明不是'tblInstitute'類型集合的方法聲明,但是你的'return'語句返回的是一個匿名對象,它是一個由研究所和程序組成的? – 2012-01-15 14:53:21

+0

現在只有1個錯誤不能隱式轉換類型'int'到'布爾'\t在這一行(我已檢查這兩個字段是int類型的正確加入關係窗口) Inst.InstituteID = Progs.InstituteID – Jawad 2012-01-15 14:54:17

0

首先,你需要 1.創建實體類。 2.數據上下文。 3.定義關係 4.查詢

Reference

from I in tblIns 
from P in tblProg 
Where I.InsID = P.InsID 
Select I.InsID, P.ProgName 
0

假設你有你的外鍵中你可以做這個數據庫設置不當,沒有必要向自己加入:

from x in db.tblProgs 
select x.tblIns.id, x.Progname