2011-07-09 16 views
1

の次の項目をチェックするために、私は、このようなこのテーブルを持っている:どのようにLINQ 2 SQLクエリ

position    title 
--------------------------- 
1      "t1" 
2      "t1" 
3      "t2" 
4      "t1" 
5      "t2" 

私は「T1」のタイトルをフィルタリングしたいが、現在位置と次の位置は1差を持つ位置について。これによれば、私は最初に "t1"を望み、結果は[1,2]でなければなりません。

linq 2 sqlを使用してこのクエリを書く方法はありますか?あなたは自己参加したいよう

+0

まず、TSQLでどのように行うのかを理解してください。 –

+0

申し訳ありません、親愛なるMarcですが、私は – Arian

+0

のTSQLクエリを知りません。それでqieryが2行(成功すれば)を返すか、または線のペアを返すことを望みますか? – Tigran

答えて

2

サウンズ:

var query = from item1 in db.Items.Where(x => x.title == "t1") 
      from item2 in db.Items.Where(x => x.title == "t1") 
      where item1.position + 1 == item2.position 
      select item1; // Adjust however you want, e.g. new { item1, item2 } 

今、私はそれが実際にSQLで動作するかどうかわからない...しかし、論理的に、それはあなたが欲しいものです。

+0

ありがとうが、このコードはonlの最初の行を返します。 – Arian

+0

これはあなたのコードのTSQLです:exec sp_executesql N'SELECT [t0]。[ID]、[t0]。[位置]、[t0]。[タイトル] FROM [dbo]。[Headers] AS [t0] ([t0]。[タイトル] = @ p1)AND([t1]。[位置])AND [ (4000)、@ p0 = 1、@ p1 = N't1 '、@ p2 = 1、p2 = n1、p2 = N't1 ' – Arian

+0

@ Nima:最初の行には直後の位置の直後に直接項目があります。 –