linq中的关键字是什么?

时间:2013-06-16 15:44:44

标签: c# .net linq

有人可以解释linq中使用from的内容吗?在MySQL中,from用于指定表。但我不明白它在linq中的用法。

   var artists = from a in context.Artists
                 where a.Name.StartsWith("A")
                 orderby a.Name
                 select a;

3 个答案:

答案 0 :(得分:3)

它基本上意味着同样的事情。具体来说,from允许您指定数据源和范围变量。

from a in Artists表示数据源Artists,指定序列a的连续元素。对于查询的其余部分,a引用Artists

的元素

您编写的上述代码等同于

var artists = context.Artists
                     .Where(a => a.Name.StartsWith("A"))
                     .OrderBy(a => a.Name);

如果您在LINQ提供程序上执行上述操作,那么它将抽象出一个SQL数据库,它最终将转换为等同于

的内容。
select * from Artists a
where a.Name is like 'A%'
order by a.Name

它在LINQ中的顺序略有不同的原因是协助解析器和IntelliSense引擎。

答案 1 :(得分:3)

它与SQL中的运算符完全相同。查询语句只是向后写,以使IntelliSense和类型推断工作。当FROM结束时,这些功能不能很好地工作。

当您使用工具构建SQL语句时,您所做的基本相同。首先指定要查询FROM的内容,然后绘制JOIN链接,然后选择您感兴趣的列。工作流也是向后的,就像Linq查询理解一样。事实上,你可以说SQL是倒退的:)

答案 2 :(得分:1)

所有LINQ个查询操作都包含三个不同的操作:

  • 获取数据源。
  • 创建查询。
  • 执行查询。

from子句指定数据源,where子句应用过滤器,select子句指定返回元素的类型。

因此,您的查询与

完全相似
var artists = context.Artists
                     .Where(a => a.Name.StartsWith("A"))
                     .OrderBy(a => a.Name);