2011-07-09 35 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

對不起,親愛的馬克,但我不知道TSQL查詢它 – Arian

+0

所以,你希望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

謝謝,但此代碼返回第一行。 – Arian

+0

這是您的代碼的TSQL:exec sp_executesql N'SELECT [t0]。[id],[t0]。[Position],[t0]。[Title] FROM [dbo]。[Headers] AS [t0], [(d0]。[Headers] AS [t1] WHERE(([t0]。[Position] + @ p0)= [t1]。[Position])AND([t0]。[Title] = @ p1)AND [4000]',@ p0 = 1,@ p1 = N't1',@ p2 ='p2' N't1' – Arian

+0

@Nima:只有第一行有一個直接位於它後面的位置。 –