Linq的方法有什么区别?谈论缓存。

15 浏览
0 Comments

Linq的方法有什么区别?谈论缓存。

我对以下查询的使用有些困惑:

这个:

var query = from p in ctx.Persons
            where x.Flat.Building.Id == 1 && x.Archived == false
            select p;

以及这个:

var query = ctx.Persons.Where(x => x.Flat.Building.Id == 1 && x.Archived == false);

如果我对两个查询结果进行一些更改并尝试再次查询它们,第一个会显示旧结果,但第二个不会?

这个回答试图解释,但对我来说真的很困惑。

编辑

也许我的问题并不像我期望的那样清晰,但我将试着集中回答。

我的确切问题是,如果我使用查询语法并对数据进行一些更改,再次查询时它不会加载新鲜的数据。但在这个回答中,作者谈到如果使用流畅的语法,就不会发生这种情况。

现在这是我困扰的地方,为什么查询语法会发生这种情况,而流畅的语法却不会?

0
0 Comments

在这篇文章中,我们讨论了Linq的两种不同语法:查询语法和方法语法。虽然这两种语法在语法上有所不同,但在语义上是完全相同的。第一种查询与第二种查询完全相同,唯一的区别在于语法。第一种查询使用的是所谓的查询语法,而第二种查询使用的是所谓的方法语法。在编译过程中,第一种查询会在编译的第一步被编译为第二种查询。

问题的出现是因为有人想知道查询语法和方法语法之间的区别。通过查看微软的官方文档,我们得知这两种语法在语义上是完全相同的。这意味着无论使用哪种语法,最终执行的操作都是相同的。

为了解决这个问题,我们需要了解查询语法和方法语法的异同。查询语法更接近自然语言,使用关键字(如"from"、"where"、"select"等)来描述查询操作。方法语法则更接近传统的编程语言,使用方法调用和方法链来执行查询操作。虽然语法不同,但它们最终实现的功能是相同的。

在实际使用中,我们可以根据个人的喜好和习惯选择使用查询语法还是方法语法。无论选择哪种语法,都可以实现相同的查询操作。

总结起来,查询语法和方法语法是Linq中的两种不同的语法形式,它们在语法上有所不同,但在语义上是完全相同的。选择哪种语法形式取决于个人的喜好和习惯。无论选择哪种语法,最终执行的查询操作都是相同的。

0