0

我有一个包含各种表的数据库,我使用各种 SQL 查询来提取以下内容:-

表格1

ID、姓氏、职务、部门

1、琼斯先生,20岁

1、琼斯先生,21 岁

一个人可以是多个部门的成员。因此,我执行的 SQL 查询会生成多行同一个人(相同 ID)但部门 ID 不同的行。此信息存储在列表中。

我可以在 DataGridView 对象中毫无问题地显示此信息。

我还有另一个部门列表,我通过 SQL 查询填充:-

身份证、姓名

20、账目

21、管理员

我想要实现的是结合这两个列表,所以我最终得到如下结果:-

ID、姓氏、职务、部门

1,琼斯,先生,账户,管理员

因此,新的第三个列表每个人 ID 仅包含 1 行,但该行包含部门名称而不是部门 ID,并且该行包含该人所属的所有部门。

4

1 回答 1

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();
于 2013-04-07T19:14:22.943 回答