首页 > 解决方案 > LINQ语句,检查是否剩余元素

问题描述

我们是 LINQ 的新手,我们想知道是否有任何方法可以检查句子中是否还有元素,例如 Java 中的 ResultSet.next()。

在 Java 中,如果有剩余元素,则 resultSet 返回 true,否则返回 false。我们想知道 LINQ 中是否有类似的方法。

public List<Product> FindProductsByKeyword(string productName, Category category, int page, int size)
    {

        DbSet<Product> products = Context.Set<Product>();

        List<Product> result;
        if (category == null)
        {
            result = (from p in products
                      where p.productName.Contains(productName) //, StringComparison.OrdinalIgnoreCase)
                      orderby p.productName descending
                      select p).Skip(page).Take(size).Include("Category").ToList();
        }
        else
        {
            result = (from p in products
                      where p.productName.Contains(productName)
                      && p.categoryId == category.id
                      orderby p.productName descending
                      select p).Skip(page).Take(size).ToList();
        }


        return result;
    }

这是我们的代码(我不知道这是否会有所帮助)我们采用具有多个 Size 的元素,但我们不知道是否还有更多元素。

标签: c#linq

解决方案


使用终止方法ToList()启动数据库查询并将返回的表解析为简单的内存中List<T>(与 Java 中相同ArrayList<T>)。

如果要检查结果中是否有任何条目,只需检查列表的Count属性:

if (result.Count > 0)
{
    // Do something
}

或者使用 LINQ 的Any()扩展方法,在这种情况下更具可读性:

if (result.Any())
{
    // Do something
}

推荐阅读