如何在SELECT TOP 1上维护LINQ延迟执行

本文关键字:维护 LINQ 延迟 执行 SELECT TOP | 更新日期: 2023-09-27 17:58:43

当SQL查询包含select top 1时,如何创建一个保持延迟执行的LINQ语句?我希望它能够链接到其他类型为IQueryable<>的LINQ查询。

var query1 = from t in table
             where t.test == 1
             select t;
//this should set query2 of type IQueryable<TableEntity> 
var query2 = from q in query1
             [[SELECT TOP 1 SOMEHOW]]
             select q;
var query3 = from q in query2
             where q.test2 == 2
var executedResult = query3.ToList();

如果解决方案使用lambda或linq或两者都使用,则不必大惊小怪。

如何在SELECT TOP 1上维护LINQ延迟执行

你可以试试这个:

var query2 = (from q in query1
             select t)
             .Take(1);

Take(count)返回包含count元素的IEnumerable(如果找不到足够的元素,则返回更少)。

使用返回IEnumerable的Take(1)。如果源为空,则可能返回null。查看这些链接以了解更多信息。。。

MSDN来源:http://msdn.microsoft.com/de-de/library/bb503062(v=vs.110).aspx

在您的情况下

var query2 = (from q in query1
         select t)
         .Take(1);