Linq从多个表中选择相同的数据类型

时间:2012-12-10 19:33:33

标签: c# .net linq

我想要实现的是来自多个表的字符串列表。我目前有一个简单的数据库结构,带有2个子表的ParentTable(让我们说Child1和Child2)。 Child1& Child2有一个名为Name的nvarchar(50)类型的列。目前,我可以执行多个查询来实现单个字符串列表:

var myList = new List<string>();
myList.AddRange(Child1.Select(c1 => c1.Name));
myList.AddRange(Child2.Select(c2 => c2.Name));

OR

var myList = new List<string>();
myList.AddRange(ParentTable.SelectMany(x => x.Child1.Select (c1 => c1.Name)));
myList.AddRange(ParentTable.SelectMany(x => x.Child2.Select (c2 => c2.Name)));

我的最终问题是,是否可以将其合并为1个查询,即使这意味着使用父表?

2 个答案:

答案 0 :(得分:3)

您只需使用Concat运算符:

var results = Child1.Select(c1 => c1.Name)
              .Concat(Child2.Select(c2 => c2.Name)).ToList();

答案 1 :(得分:0)

您可以使用Union运算符,它也会删除重复项:

var q = Child1.Select(c1 => c1.Name).Union(Child2.Select(c2 => c.Name)).ToList();