奇怪的LINQ语法,请帮忙看一下。

eisldkw 2019-05-31 08:31:09


var q=

from e in db.students

where e.sage=20

SELECT E

这语法怎么跟 SQL 语法差别这么大

请问
1、 select e 为什么不是 select *
2、 from e 为什么 后面 要 加 in db.students , e 不是个表吗
3、 为什么select 在语句最后
...全文
141 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hztltgg 2019-05-31
  • 打赏
  • 举报
回复
引用 11 楼 eisldkw 的回复:
[quote=引用 10 楼 正怒月神 的回复:] [quote=引用 8 楼 eisldkw 的回复:] [quote=引用 4 楼 正怒月神 的回复:] 额。。。。虽然sql语句更习惯。 但是,人家微软承认,其实linq的语法更贴近现实语法。 至于select *这种问题,只能说一个是sql,一个是linq,当然不一样。 linq更多的还是面向对象。 select e,就是查询出students集合中符合条件的对象, 然后作为了一个新的对象集合。
非常感谢,请问 有时候会看到 select new 为什么要用 new ?[/quote] select new 是想要产生一个新的对象, 可能是新的已经定义过的对象,也可能是一个匿名对象。 说白了,其实就是将数据整理后。产生一个新的类型的对象集合。[/quote] 非常感谢,以下语句不也是产生一个新的对象 而后 赋值给 q 变量吗,为什么没用 new var q= from e in db.students where e.sage=20 SELECT E[/quote] 你这样理解。 在处理一行前,from e in db.students 会从数据库取到一行记录,放到e里去了,处理完后,最后用select要形成一个对象加到表里,如果不用new,那就用e这个原始的对象,如果想变化一下,那就用new来使用一个新定义的或已有的类,并把e的一些属性放到新的里面去。
wanghui0380 2019-05-31
  • 打赏
  • 举报
回复
linq 体系是从函数编程过来的 select 相当于 map 函数 他的意思是: 根据条件过滤记录,然后重新映射为一个新的记录。(而非 “从记录字段里查找我要的那些字段”) ps:其实不用纠结,如果要纠结程序员还不纠结死?delphi的赋值还是 xxx:=111,你问他为啥赋值还要打个冒号 “:=” 至于你最后问的,我们说映射,你映射了么?没有啊,你就要全体字段啊。 这相当于 select *,对啊!我要全体的,用*代替全体的,好吧,这也要问一下,为啥*去代替全体么?
eisldkw 2019-05-31
  • 打赏
  • 举报
回复
引用 10 楼 正怒月神 的回复:
[quote=引用 8 楼 eisldkw 的回复:] [quote=引用 4 楼 正怒月神 的回复:] 额。。。。虽然sql语句更习惯。 但是,人家微软承认,其实linq的语法更贴近现实语法。 至于select *这种问题,只能说一个是sql,一个是linq,当然不一样。 linq更多的还是面向对象。 select e,就是查询出students集合中符合条件的对象, 然后作为了一个新的对象集合。
非常感谢,请问 有时候会看到 select new 为什么要用 new ?[/quote] select new 是想要产生一个新的对象, 可能是新的已经定义过的对象,也可能是一个匿名对象。 说白了,其实就是将数据整理后。产生一个新的类型的对象集合。[/quote] 非常感谢,以下语句不也是产生一个新的对象 而后 赋值给 q 变量吗,为什么没用 new var q= from e in db.students where e.sage=20 SELECT E
正怒月神 2019-05-31
  • 打赏
  • 举报
回复
引用 8 楼 eisldkw 的回复:
[quote=引用 4 楼 正怒月神 的回复:] 额。。。。虽然sql语句更习惯。 但是,人家微软承认,其实linq的语法更贴近现实语法。 至于select *这种问题,只能说一个是sql,一个是linq,当然不一样。 linq更多的还是面向对象。 select e,就是查询出students集合中符合条件的对象, 然后作为了一个新的对象集合。
非常感谢,请问 有时候会看到 select new 为什么要用 new ?[/quote] select new 是想要产生一个新的对象, 可能是新的已经定义过的对象,也可能是一个匿名对象。 说白了,其实就是将数据整理后。产生一个新的类型的对象集合。
eisldkw 2019-05-31
  • 打赏
  • 举报
回复
引用 6 楼 exception92 的回复:
Linq 与 Sql 是两个概念,不用这么多“为什么”,人家就是这样设计,规定的,咱用着方便就行了。
非常感谢,请问 有时候会看到 select new 为什么要用 new ?
eisldkw 2019-05-31
  • 打赏
  • 举报
回复
引用 4 楼 正怒月神 的回复:
额。。。。虽然sql语句更习惯。 但是,人家微软承认,其实linq的语法更贴近现实语法。 至于select *这种问题,只能说一个是sql,一个是linq,当然不一样。 linq更多的还是面向对象。 select e,就是查询出students集合中符合条件的对象, 然后作为了一个新的对象集合。
非常感谢,请问 有时候会看到 select new 为什么要用 new ?
eisldkw 2019-05-31
  • 打赏
  • 举报
回复
引用 3 楼 stherix 的回复:
var q = db.students.Where(x=>x.sage==20);
非常感谢,请问 有时候会看到 select new 为什么要用 new ?
exception92 2019-05-31
  • 打赏
  • 举报
回复
Linq 与 Sql 是两个概念,不用这么多“为什么”,人家就是这样设计,规定的,咱用着方便就行了。
hez2010 2019-05-31
  • 打赏
  • 举报
回复
LINQ 是为了方便集合的查询,本身也不是只针对 SQL。
正怒月神 2019-05-31
  • 打赏
  • 举报
回复
额。。。。虽然sql语句更习惯。 但是,人家微软承认,其实linq的语法更贴近现实语法。 至于select *这种问题,只能说一个是sql,一个是linq,当然不一样。 linq更多的还是面向对象。 select e,就是查询出students集合中符合条件的对象, 然后作为了一个新的对象集合。
stherix 2019-05-31
  • 打赏
  • 举报
回复
var q = db.students.Where(x=>x.sage==20);
eisldkw 2019-05-31
  • 打赏
  • 举报
回复
引用 1 楼 stherix 的回复:
其实这是最早的linq语法 现在这么写的人已经比较少了 1. 不能select * ,毕竟这不是真正的SQL 2. e是db.students里的每条记录,不是students表 3. 语法就是这样的
非常感谢,请问,现在的 语法怎么写,有没有新写法的相关的资料
stherix 2019-05-31
  • 打赏
  • 举报
回复
其实这是最早的linq语法 现在这么写的人已经比较少了 1. 不能select * ,毕竟这不是真正的SQL 2. e是db.students里的每条记录,不是students表 3. 语法就是这样的
  • 打赏
  • 举报
回复
我觉得你得像张无忌学习, 忘记SQL, 去看LINQ 语法。 然后用list<T>创建个记录集, 然后都通过LQ去取出你想要的参数

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧