我有两个列表,一个用于存储人员主要信息,另一个用于动态存储详细信息。但我需要一个列表来混合它们并在输出列表中添加一个序号。
E.G
MAIN
ID --- NAME --- AGE
1 --- Jack --- 23
2 --- Robert --- 30
3 --- Lee --- 15
详情
ID -- MAINLinK -- Details
1 -- 1 -- Tall <= Jack
2 -- 1 -- Thin <= Jack
3 -- 1 -- Blonde <= Jack
4 -- 2 -- Fat <= Robert
5 -- 3 -- Chinesse <= Lee
6 -- 3 -- skinny <= Lee
必填项目:
Id(MAIN) -- SequentialNUM -- Name(MAIN)
1 -- 1 -- Jack
1 -- 2 -- Jack
1 -- 3 -- Jack
2 -- 1 -- Robert
3 -- 1 -- Lee
3 -- 2 -- Lee
顺序号码是我真正需要的号码......
注意:这只是一个简单的示例,可以获得我真正需要的东西,而且我无法找到单独使用Linq语句来实现此目的的方法,而无需添加循环并创建更多对象。
提前感谢。
答案 0 :(得分:3)
var list = MainList.Join(DetailsList, x=>x.ID, x=>x.MAINLink,(x,y)=> new {x,y})
.GroupBy(a=>a.x.ID)
.Select(g=>g.Select((k,i)=>new {k,i}))
.SelectMany(a=>a)
.Select((a)=> new {
Main = a.k.x,
SequentialNUM = a.i + 1,
Detail = a.k.y
})
.OrderBy(x=>x.Main.Id);