我有两个数据库表(与关系1:m相连):
地点(locId,locName)
1,美国
2,德国
3,西班牙
亚位(subLocId,subLocName,locId)
1,丹佛,1
2,底特律,1
3,纽约,1
4,汉堡,2
5,柏林,2
6,慕尼黑,2
7岁,马德里,3岁
8,巴塞罗那,3
9,巴伦西亚,3
通过使用Linq到Sql,我需要填充LocationDto,如: LocationDto (locId,subLocId,name)
1,null,美国
1,1,丹佛
1,2,底特律
1,3,纽约
2,零,德国
2,4,汉堡
2,5,柏林
2,6,慕尼黑
西班牙,null
3、7、马德里
3、8,巴塞罗那
3、9、巴伦西亚
发布于 2013-08-22 12:26:23
创建一个新的类来保存已连接的对象:
public class JoinedLocations
{
public int locId{get;set;}
public int? subLocId{get;set;}
public string Description{get;set;}
}然后运行此查询。
var query =
Location
.GroupJoin
(
Sublocations.DefaultIfEmpty(),
l=>l.locId,
s=>s.locId,
(l,s)=>new {l,s}
)
.SelectMany
(
x=>
x.s.DefaultIfEmpty
(
new Sublocations
{
subLocId=-1,
subLocName="",
locId=-1
}
),
(l,s)=>
new JoinedLocations
{
locId=l.l.locId,
subLocId=s.subLocId,
Description = (s.subLocId==-1?l.l.locName:s.subLocName)
}
)
.Union
(
loc
.Select
(
x=>
new JoinedLocations
{
locId=x.locId,
subLocId=null,
Description = x.locName
}
)
)
.OrderBy(x=>x.locId)
.ThenBy (x => x.subLocId)这会给你你想要的结果。
https://stackoverflow.com/questions/18380072
复制相似问题