数据库
create table stu
(
id int ,
name varchar(100)
)
create table score
(
id int ,
scores int
)
1.首先还是先回顾下LINQ怎么查询制定字段
很简单 代码如下 也可以自定义列名
1 var d = from c in wq.stu 2 select new 3 { 4 c.id 5 };
1 var d = from c in wq.stu 2 select new 3 { 4 我日你妹= c.id 5 };
2.回归正题 记录谈下LINQ的多表查询
(1)左连接查询
var res = from a in wq.stu
join b in wq.score on a.id equals b.id into cao
from x in cao.DefaultIfEmpty()
select new
{
a.id,
a.name,
x.scores
};
先看看这个吧 其实也没多看到的 就是个左连接查询而已 嗯哈 记住了哈
(2)多表查询
var str = from c in wq.stu
join
d in wq.score
on c.id equals d.id
select new
{
c.id,
c.name,
d.id,
d.scores
};
这个时候就会报个错 因为c.id, d.id 是相同的 不晓得为什么LINQ机制就是不允许这样 删除一个就好了
得到下面的代码
var str = from c in wq.stu
join
d in wq.score
on c.id equals d.id
select new
{
c.id,
c.name,
d.scores
};
运行 分析下 得到的str其实就是一个匿名模型 包含了这3个这段的一个泛型集合(当然在未 .ToList()转换之前还是弱类型 )
然后我们如果想要把他封装起来的话 就需要定义一个符合这个模式的模型
public class ff
{
public int? fid { get; set; }
public int? fscores { get; set; }
public string fname { get; set; }
}
嗯哈 然后就开始封装吧 封装的方法类似
List<ff> str = (from c in wq.stu
join d in wq.score
on c.id equals d.id
select new ff()
{
fid = c.id,
fname = c.name,
fscores = d.scores
}).ToList();
嗯哈 大功告成 go to sleep 母情节快到了 祝福老妈节日快乐