EF查询 linq写法 DbContext.DbSet<TEntity>

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF查询 linq写法 DbContext.DbSet<TEntity>相关的知识,希望对你有一定的参考价值。

public class BlogDbContext : DbContext

public BlogDbContext()
: base("BlogDbContext")



public DbSet<BlogArt> BlogArt

get;
set;


现在我想查询分类ID为1的博文,请问下面两种写法有什么异同?
1 BlogDbContext Db=new BlogDbContext();
return Db.BlogArt.where(a => a.BlogCata_ID== 1).toList();
2 var ls=
from a in Db.BlogArt
where a.BlogCata_ID==1
select a;
return a.toList();
本人不明白的地方,第二种方法,ef会生成sql查询语句,返回的是BlogCata_ID=1的所有博文
但我对第一种方法就不是很明白,它是跟第二种方法一样生成查询语句呢,还是首先从数据库返回所有博文数据,然后再在返回的数据筛选呢?

这两种都是直接查询数据库的,没有在内存中存储,

但要是这样两种都可以先把数据缓存到内存中再查:

     List<BlogArt> ba=Db.BlogArt.toList();

     ba.where(a => a.BlogCata_ID== 1)

    var ls=
                   from a in Db.BlogArt.toList()
                   where a.BlogCata_ID==1
                   select a;

参考技术A 查询都是一样的。
EF在没有ToList()前都不会去操作数据库
参考技术B 第一种是lamda表达式,第二种树linq,本质都是一样的吧。

以上是关于EF查询 linq写法 DbContext.DbSet<TEntity>的主要内容,如果未能解决你的问题,请参考以下文章

linq和ef关于group by取最大值的两种写法

linq和ef关于group by取最大值的两种写法

linq 和lambda查询

linq和EF查询的用法和区分

c# ef框架怎么使用linq语句多表查询?

EF-LINQ查询