原文:https://blog.csdn.net/weixin_40719943/article/details/106959769
一、简单表达式查询
方式一:
查询原理:前面两行只是创建了查询语句,并没有执行查询数据库操作,
和linq一样,只有加上toList()或类似方法,才会执行查询数据库的操作
var leagues1 = context.Leagues
.Where(x => x.Country.Contains("e"))
.ToList();
总结:DbContext遇到以下方法时才会执行查询操作:
> ToList(),First(),FirstOrDefault()
> Single(),SingleOrDefault(),Last(),LastOrDefault()
> Count(),LongCount(),Min(),Max(),Average(),Sum()
> Find()
注意:使用LastOrDefault()之前要先排序,否则会报错。
方式二:
上面的查询也可以用EF的方法实现
var leagues11 = context.Leagues
.Where(x => EF.Functions.Like(x.Country, "%e%"))
.ToList();
方式三 :
使用foreach也会执行查询数据库操作,推荐用tolist()
foreach (var item in context.Leagues)
{
Console.WriteLine(item.Name);
}
方式四:
使用linq查询
var leagues2 = (from lg in context.Leagues
where lg.Country == "USA"
select lg)
.ToList();
二、主键查询
有两种方式:
方式1是常规的查询
方式2:EFCore提供Find接口专门用来针对主键的查询,先查内存内容,没有才查数据库。
//方式1
var first = context.Leagues.SingleOrDefault(e => e.Id == 2);
//方式二:使用find方法,专门用于主键的查询
var second= context.Leagues.Find(2);
三、分页查询
skip:相当于slq分页查询中的offset
Take:查询的数量
var leagues = context.Leagues.Skip(1).Take(3).ToList();