C# 如何检查LINQ2SQL查询中的下一项

C# 如何检查LINQ2SQL查询中的下一项,c#,linq,linq-to-sql,c#-4.0,C#,Linq,Linq To Sql,C# 4.0,我在这张桌子上有这样一张桌子: position title --------------------------- 1 "t1" 2 "t1" 3 "t2" 4 "t1" 5 "t2" 我想过滤“t1”标题,但对于当前职位和下一个职位有1个差异的职位。根据这一点,如果我想

我在这张桌子上有这样一张桌子:

position             title
---------------------------
1                     "t1"
2                     "t1"
3                     "t2"
4                     "t1"
5                     "t2"
我想过滤“t1”标题,但对于当前职位和下一个职位有1个差异的职位。根据这一点,如果我想要第一个“t1”,结果应该是[1,2]。


如何使用linq 2 sql编写此查询?

听起来您想要一个自联接:

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中是否真的有效。。。但从逻辑上讲,这是您想要的。

首先,了解如何在TSQL中实现它。。。。不确定这是一个简单的查询。对不起,亲爱的Marc,我不知道它的TSQL查询。你想让qiery返回2行(如果成功),还是返回行集合“对”?@Tigran:如果成功,我只想返回2行succeed@Nima:为什么会有两排?只有第1行后面有另一个“t1”-第2行不应返回,因为第3行有“t2”。如果你真的想返回第3行,你需要澄清你的标准。这是你代码的TSQL:exec sp_executesql N'SELECT[t0].[id],[t0].[Position],[t0].[Title]FROM[dbo].[Headers]AS[t0],[dbo].[Headers]AS[t1]其中([t0].[Position]+[p0]=[t1].[Position]和([t0].[Title].[Title]=@p1]和[t1].[t1].[Title]=@p2],[t1].[p0]=@int],N''''.[t1].[p0].],@p2 nvarchar(4000)'、@p0=1、@p1=N't1'、@p2=N't1'@Nima:只有第一行后面有一个直接项目,其位置直接在它后面。是的,但我希望对连续的行使用“t1”。请参阅我的列表中的粗体文本Question@Nima:你说了你想要的结果,但没有说为什么。您可以更改select以同时返回item1和item2,这样每个结果都包含“当前”行及其匹配的“下一个”行。这比有另一个条件要简单。