LinQ高级查询组合查询IQueryable集合类型

Posted deepalley

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LinQ高级查询组合查询IQueryable集合类型相关的知识,希望对你有一定的参考价值。

 

LinQ高级查询:

1、模糊查询(包含)

Repeater1.DataSource = con.car.Where(r =>r.name.Contains(s)).ToList();

2、开头

Repeater1.DataSource = con.car.Where(r =>r.name.StartsWith(s)).ToList();

3、结尾

Repeater1.DataSource = con.car.Where(r =>r.name.EndsWith(s)).ToList();

4、个数

IEnumerable<car> clist = con.car;
int count =clist.Count;

5、最大最小值平均值

con.car.Max(r => r.price);
con.car.Min(r => r.price);
con.car.Average(r => r.price);

6、求和、升序、降序

con.car.Sum(r => r.price);
Repeater1.DataSource = con.car.OrderBy(r => r.price);
Repeater1.DataSource = con.car.OrderByDescending(r => r.price);

7、分页

  集合的Skip方法:跳过多少条数据

  Take方法:取前多少条数据  

  例:打开页面绑定第一页的数据

技术图片
int count = 4;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            using (Data0928DataContext con = new Data0928DataContext())
            {
                Repeater1.DataSource = con.Users.Take(count).ToList();
                Repeater1.DataBind();
            }
        }
    }
技术图片

8、组合查询

  首先介绍一下IQueryable集合,在LinQ中使用此集合,不会立马查询出实际的数据,而是在真正使用到此集合时才会去执行查询,可以提高服务器内存的效率,避免占用内存过多导致服务器崩溃,但需注意如果中途把此集合ToList()则会立刻执行并返回实际的数据。

技术图片
using (Data0928DataContext con = new Data0928DataContext())
        {
            IQueryable<Users> ulist = con.Users;
            if (name.Length > 0)
            {
                ulist = ulist.Where(r => r.UserName.Contains(name));
            }
            if (nick.Length > 0)
            {
                ulist = ulist.Where(r => r.NickName.Contains(nick));
            }
            if (year.Length > 0)
            {
                ulist = ulist.Where(r => Convert.ToDateTime(r.Birthday).Year.ToString() == year);
            }
            Repeater1.DataSource = ulist.Take(count);
            Repeater1.DataBind();
        }    
技术图片

9、集合的交集

  集合的Intersect方法,取两个集合的交集

var allList = nameList.Intersect(brandList);

以上是关于LinQ高级查询组合查询IQueryable集合类型的主要内容,如果未能解决你的问题,请参考以下文章

无法为具有集合属性的类编写正确的 Linq 查询 - 出现 EfCore5 翻译错误

当我只需要计数而不读取 Document-Db 数据库中的所有文档时,如何使用 Linq 构造 IQueryable 查询?

LINQ学习笔记

Webform(Linq高级查分页组合查询)

更改存储库以支持 IQueryable(LINQ to SQL 查询)

我应该使用 Linq 和 IQueryable<T> 来实现查询对象模式