浅谈LINQ连表查询的那些事(高手滚远点)

数据库

create table stu
(
id int ,
name varchar(100)
)

create table score
(
id int ,
scores int
)

1.首先还是先回顾下LINQ怎么查询制定字段

 很简单 代码如下    也可以自定义列名

View Code
1   var d = from c in wq.stu
2                     select new
3                     {
4                         c.id
5                     };
View Code
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  母情节快到了 祝福老妈节日快乐

 

转载于:https://www.cnblogs.com/Rock-Lee/archive/2013/05/10/3072194.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值