EFCore分页查询

分页的实现
1、Skip(3).Take(8)最好显示指定排序规则(Skip跳过几条数据,Take获取几条数据)
2、需要知道满足条件的数据的总条数:用IQueryable的复用LongCount和Count
3、页数:long pageCount = (long)Math.Ceiling(count * 1.0 / pageSize);(Math.Ceiling小数向上取整)

### EF Core实现模糊查询的方法 在EF Core中,可以通过`EF.Functions.Like`方法实现模糊查询。该方法允许使用SQL风格的通配符(如`%`和`_`)来匹配字符串[^1]。以下是一个具体的示例,展示如何查询博客文章标题中包含某一字符的文章列表。 ```csharp using Microsoft.EntityFrameworkCore; public class BlogPost { public int Id { get; set; } public string Title { get; set; } } public class BlogContext : DbContext { public DbSet<BlogPost> BlogPosts { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("YourConnectionStringHere"); } } public class Program { public static void Main(string[] args) { using (var context = new BlogContext()) { var keyword = "特定字符"; // 替换为需要查找的字符 var posts = context.BlogPosts .Where(x => EF.Functions.Like(x.Title, $"%{keyword}%")) .ToList(); foreach (var post in posts) { Console.WriteLine(post.Title); } } } } ``` 上述代码中,`EF.Functions.Like`方法被用来匹配博客文章标题中包含特定字符的所有记录。通过将`keyword`变量插入到`%`通配符之间,可以实现对标题中任意位置包含该字符的模糊匹配[^1]。 此外,还可以结合其他查询方法进一步优化结果。例如,使用`OrderBy`对结果进行排序,或者使用分页功能限制返回的记录数量[^3]。 ```csharp var paginatedPosts = context.BlogPosts .Where(x => EF.Functions.Like(x.Title, $"%{keyword}%")) .OrderByDescending(x => x.Id) // 按照ID降序排列 .Skip((pageIndex - 1) * pageSize) // 分页逻辑 .Take(pageSize) .ToList(); ``` 如果需要更复杂的查询条件,比如同时匹配多个字段或使用正则表达式,可能需要借助数据库的特定功能或自定义SQL[^2]。 ### 注意事项 - 如果查询条件为空或无效,可以使用`FirstOrDefault()`避免抛出异常。 - 在实际项目中,建议封装分页逻辑以提高代码复用性[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值