我有一个包含各种表的数据库,我使用各种SQL查询来提取以下内容: -
表1
ID, Surname, Title, Department 1, Jones, Mr, 20 1, Jones, Mr, 21
一个人可以是许多部门的成员。所以我做的SQL查询会产生同一个人的多行(相同的ID)但具有不同的部门ID。此信息存储在列表中。
我可以在DataGridView对象中毫无问题地显示此信息。
我还有另一个部门列表,我通过SQL查询填充: -
ID, Name 20, Accounts 21, Admin
我想要实现的是将这两个列表结合起来,所以我最终会得到类似的结果: -
ID, Surname, Title, Department 1, Jones, Mr, Accounts, Admin
因此,新的第三个列表每个人ID只包含1行,但该行包含部门名称而不是部门ID,并且该行包含该人员所属的所有部门。
答案 0 :(得分:2)
我建议在SQL中加入,因为它会更高效 - 这就是DataBase的目的!
但是,如果你真的想要你可以使用LINQ to Objects。我假设你有两个清单:
var people = new List<Person>();
var departments = new List<Department>();
Person
和Department
都有你写过的属性。
您的查询:
var query= from p in people
join d in departments on p.Department equals d.ID
group d by new { p.ID, p.Surname, p.Title } into g
select new {
g.Key.ID,
g.Key.Surname,
g.Key.Title,
Departments = String.Join(", ", g.Select(d => d.Name))
};
将查询结果发送到匿名类型的List
:
var result = query.ToList();