当索引为-1时,如何从linq查询中删除Take()函数

本文关键字:删除 查询 Take 函数 linq 索引 -1时 | 更新日期: 2023-09-27 18:18:25

我使用带linq查询的Take()函数。但是我想从linq查询中删除Take()函数,如果我在其中给出Take(-1)。因为我不想让sql查询"Top"子句,如果索引是-1。

提前感谢您的建议

当索引为-1时,如何从linq查询中删除Take()函数

var itemsToTake = -1;
IQueryable<T> data = your items collection with any linq you want;
// Apply Take method, if required
if (itemsToTake > 0)
    data = data.Take(itemsToTake);
// continue using data: return it or convert to list, etc 

谢谢你的建议,但我得到了答案。我做了一个扩展方法,检查了索引。这是我使用的扩展方法。

public static IQueryable<T> SkipTakeQuery<T>(this IQueryable<T> query, int skipIndex, int takeIndex)
        {
            if (skipIndex == -1)
            {
                return query;
            }
            return query.Skip(skipIndex).Take(takeIndex);
        }