# Linq中如何搜索并生成List中的List

## 前提：

``````User
id    name    班级    年龄
1    Young    一班    25
2    Hong     二班    24

Score
id    userId    course    score
10    1        数据结构    100
11    1        高等数学    90
12    2        数据结构    95
13    2        高等数学    85``````

``````(from u in User join s in Score
on u.id equals s.userId
select MapToEntity(u,s)).ToList());

private User MapToEntity(User u, Score s){
u.score = s;
return u;
}``````

``````{
User{
Young,一班,25，
Score{
10,1,数据结构，100
}
},
User{
Young,一班,25，
Score{
11,1，高等数学，90
}
}，
User{
Hong,二班，24，
Score{
12,2，数据结构，95
}
}，
User{
Hong,二班，24，
Score{
13,2，高等数学，85
}
}
}``````

## 问题

``````{
User{
Young,一班,25，
Score{
10,1,数据结构，100
}，
Score{
11,1，高等数学，90
}
},
User{
Hong,二班，24，
Score{
12,2，数据结构，95
}，
Score{
13,2，高等数学，85
}
}
}``````

1 个回答

``````class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Class { get; set; }
public int Age { get; set; }
}

class Score
{
public int Id { get; set; }
public int UserId { get; set; }
public string Course { get; set; }
public int Value { get; set; }
}``````

``````from user in users
join scoreList in from score in scores
group score by score.UserId into scoreGroup
select new
{
UserId = scoreGroup.Key,
Scores = scoreGroup
} on user.Id equals scoreList.UserId
select new
{
user.Name,
user.Class,
user.Age,
scoreList.Scores
}``````

``````[
{
"Name": "Young",
"Class": "一班",
"Age": 15,
"Scores": [
{
"Id": 10,
"UserId": 1,
"Course": "数据结构",
"Value": 100
},
{
"Id": 11,
"UserId": 1,
"Course": "高等数学",
"Value": 90
}
]
},
{
"Name": "Hong",
"Class": "二班",
"Age": 24,
"Scores": [
{
"Id": 12,
"UserId": 2,
"Course": "数据结构",
"Value": 95
},
{
"Id": 13,
"UserId": 2,
"Course": "高等数学",
"Value": 85
}
]
}
]``````

###### 你尚未登录，登录后可以
• 和开发者交流问题的细节
• 关注并接收问题和回答的更新提醒
• 参与内容的编辑和改进，让解决方法与时俱进