C#在列表中存储数据库表行

时间:2013-04-07 18:59:11

标签: c# database

我有一个包含各种表的数据库,我使用各种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,并且该行包含该人员所属的所有部门。

1 个答案:

答案 0 :(得分:2)

我建议在SQL中加入,因为它会更高效 - 这就是DataBase的目的!

但是,如果你真的想要你可以使用LINQ to Objects。我假设你有两个清单:

var people = new List<Person>();
var departments = new List<Department>();

PersonDepartment都有你写过的属性。

您的查询:

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();