2012-01-15 10 views
0

私はLINQを初めて使っています。Linqで次のSQLクエリをどのように変換できるか教えてください。私はMVC2プロジェクトに取り組んでいます最初のSQLからLinqへの変換

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

、私は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を持っている必要があり、それは(それがであると仮定)セミコロンでステートメントを終了する必要があります。次に、ステートメントを選択すると新しいオブジェクトを選択する必要があります。あなたは、エンティティクラスを作成します 1に必要

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

このタイプのコメントは、元の投稿の編集である必要があります。私はあなたのためにそれをします –

+0

それは実際に働くつもりですか? 'tblInstitute'型のコレクションのメソッド宣言ではありませんが、あなたの' return'ステートメントは研究所とプログラムの構成である匿名オブジェクトを返していますか? –

+0

ただ1つのエラーが発生しました暗黙的に 'int'を 'bool' \tに変換することはできません(両方のフィールドがint型であることが関係ウィンドウに正しく結合されていることを確認しました) Inst.InstituteID = Progs.InstituteID – Jawad

0

まず:結果は次のようになります。 2.データコンテキスト。 3.定義関係

Reference

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

は、あなたの外部キーは、あなたがこれを行うだけでできるデータベースに適切に設定していると仮定4.クエリ、自分自身に参加するにする必要はありません。

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