linq 的join 和 lambda 的Join() 都能实现连表查询,
from a in db.UserLogin join b in db.UserDetail on a.Id equals b.Id select new { a, b };
db.UserLogin.Join(db.UserDetail, a => a.Id, b => b.Id, (a, b) => new { a, b });
两种查询方式的结果都一样,我想问的是为什么不使用更简洁的lambda呢? 而要使用linq join来实现呢?两种方式有什么优缺点吗?
第一种本身来自sql,格式化很明显不是特别符合程序过程式习惯,毕竟sql是在函数上又附加的一层脚本脚本解析;
而在c#中你可以通过反编译看到,这个“sql”在(dll中)变成了第二种,且是往往看起来非常复杂(机器嘛,只能按照基本格式去翻译,对吧)。
我更倾向函数调用式,简介,简单,美观,效率也更高。
我的观念就是工具为效率而生。
为什么推出第二种呢 —— 很明显为了天天写sql的一帮人,而from select倒置,ms只是为了只能提示更加方便,这种明显的效果你对比直接在一些sql工具里面写sql 和 vs里面 写“sql” 这是明显能感受到的。
两种方式都有人喜欢有人不喜欢的,比如你喜欢的所谓的简洁的lambda,看起来恶心极了,哈哈。
Linq 看起来基本还是SQL语句的模样。
就好像Iron man 和Captain America 都有自己的信仰,你非得杀了一个不可吗?
还有一个问题要请教一下你,lambda可以多表连接查询吗?会不会出错呢?
@染一头渐层: 两个都能多表连接查询,不会用的人都容易出错。
我见过大部分在喊坑的程序员都是不学习用法而希望微软按照他的思路设计的。
一个是看起来清爽,一个是写起来流畅
linq语法跟sql相似,看起来比较形象,但是语法有点长。
lambda简介,但是个人觉得不易理解。
优缺点就是你看谁爽就用水,谁不爽就不用谁。
lambda 太长 比linq 恶心多了 短的时候用lambda 长的时候用linq