【发布时间】:2014-07-24 03:10:11
【问题描述】:
基本上我有一个包含 2 个数据表的数据集。 DataTables 不共享一个公共键或字段,但它们通过它们的行索引相关。我从 MSDN 示例 http://msdn.microsoft.com/en-us/library/bb386921(v=vs.110).aspx 中尝试了以下代码,但由于它们不共享一个公共字段,我无法正确加入它们,所以我尝试使用两个 FROM 加入我知道是错误的表。这是我所拥有的:
public DataTable buildEmployeeDataTable(DataSet ds)
{
DataTable personIdentity = ds.Tables["PersonIdentity"];
DataTable person = ds.Tables["Person"]; ;
var query = (
from pi in personIdentity.AsEnumerable()
from p in person.AsEnumerable()
select new
{
PersonKey = pi.Field<string>("PersonKey"),
PersonNumber = p.Field<string>("PersonNumber"),
FullName = p.Field<string>("FullName")
}).ToList();
DataTable dataTable = ConvertToDataTable(query);
return dataTable;
}
它有点工作,但改为这样做:
PersonKey PersonNumber FullName
1 42 Bob
1 62 Jon
1 57 Tom
2 42 Bob
2 62 Jon
2 57 Tom
3 42 Bob
3 62 Jon
3 57 Tom
我是否需要将结果存储在另一个 DataTable 中并运行 SelectMany(p => p).Distinct()?连接这些表的正确方法是什么,以便查询通过他们的人员键返回每个人?非常感谢:)
【问题讨论】: