什么是LINQ,什么不是LINQ?

时间:2017-07-28 12:01:34

标签: linq

我已经看过将以下所有内容称为LINQ的示例。

var y = _context.Persons;
IQueryable<Person> x = _context.Persons;
var z = from tblPerson in _context.Persons
        select tblPerson;

它们都是LINQ,只是它的不同风格或只是 z LINQ?如果是这样的话,其他两个叫什么?如果他们全部LINQ如何在谷歌搜索关于他们的信息时区分三者?使用 y x 我应该在MVC CORE中使用var或IQueryable(以及为什么),我应该使用 z 吗?

1 个答案:

答案 0 :(得分:1)

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

从上面的各种LINQ链接

from tblPerson in _context.Persons
        select tblPerson;

被称为

  • 查询语法
  • 查询表达式
  • 查询理解语法

虽然这种LINQ

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关键字
    • 当你有多个生成器(来自子句)时
    • 进行加入时

和其他一切的扩展方法。