什么是LINQ,什么不是LINQ?

什么是LINQ,什么不是LINQ?,linq,Linq,我看到过以下所有的例子都被称为LINQ var y = _context.Persons; IQueryable<Person> x = _context.Persons; var z = from tblPerson in _context.Persons select tblPerson; var y=\u context.Persons; IQueryable x=_context.Persons; var z=来自_context.Persons中的tblP

我看到过以下所有的例子都被称为LINQ

var y = _context.Persons;
IQueryable<Person> x = _context.Persons;
var z = from tblPerson in _context.Persons
        select tblPerson;
var y=\u context.Persons;
IQueryable x=_context.Persons;
var z=来自_context.Persons中的tblPerson
选择tblPerson;

它们都是LINQ,只是味道不同,还是仅仅是zLINQ?如果是的话,其他两个叫什么?如果他们都是LINQ,我在谷歌搜索他们的信息时如何区分这三个?对于yx,我应该在MVC核心中使用var还是IQueryable(以及原因),我应该在z上使用吗?

感谢Jereon提供的链接。不确定var或IQueryable是否与LINQ的实现有内在联系,或者这是否是一个更一般的问题。它是通用的

从以上各种LINQ的链接

from tblPerson in _context.Persons
        select tblPerson;
db.Person = _context.Persons
                    .Include(px => px.Gender)
                    .Include(px => px.Title)
                    .Include(px => px.AddressIDs)
                        .ThenInclude(px => px.AddressType)
.Where(px => px.Name.Contains("foo")
.OrderBy(px => px.Name);
被称为

  • 查询语法
  • 查询表达式
  • 查询理解语法
而这种林克

from tblPerson in _context.Persons
        select tblPerson;
db.Person = _context.Persons
                    .Include(px => px.Gender)
                    .Include(px => px.Title)
                    .Include(px => px.AddressIDs)
                        .ThenInclude(px => px.AddressType)
.Where(px => px.Name.Contains("foo")
.OrderBy(px => px.Name);
被称为

  • 扩展方法
  • 方法语法
  • 流畅的语法
至于用法,一般意见似乎分为两大阵营

  • 在整个项目中使用其中一个
  • 混合和匹配对以下内容使用查询语法

    • 使用let关键字时
    • 当您有多个生成器(from子句)时
    • 做连接时

和其他扩展方法。

如果您需要
使用System.Linq
来使用它,那么它就是Linq。否则就不是。。回到基础(如原始概念)可能会增加一些清晰度。特别注意“LIN”:集成语言。具有一些简洁特性的类本身并不是语言集成的。当然,所有帮助实现LINQ的方法也被认为是LINQ的一部分。“我应该使用
var
还是
IQueryable
”是一个完全不同的问题,与“什么是LINQ”无关。在那个问题上发表了大量的意见。(然而,在q中选择a几乎完全是多余的,在大多数情况下,无论涉及到哪一个提供者,都会被替换为
s
。)