我想内部联接2使用Linq的DataColumns上的DataTables,我可以得到使用Linq的行如何我无法获得列。我已经评论了我试图做的如何获取列,如下所示。获取一个内部联接的列LINQ查询
这样做的原因。
我正在计划制作3种方法,LEFT JOIN,FULL JOIN和INNER JOIN,它们将返回一个DataTable,我试图使它尽可能通用,如果下面是一个好方法,不,我需要做到尽可能优化。
public static DataTable InnerJoin
(DataTable dt1, DataTable dt2,DataColumn Parent,DataColumn Child)
{
DataTable result = new DataTable();
var query =
from d in dt1.AsEnumerable()
join c in dt2.AsEnumerable() on d[Parent] equals c[Child]
select new { d, c };
/*
var columns = from d in dt1.Columns.Cast<DataColumn>()
from c in dt2.Columns.Cast<DataColumn>()
select new{c,d}
foreach (var column in columns)
{
result.Columns.Add(column);
}
**/
foreach (var row in query)
{
result.Rows.Add(row);
}
return result;
}
[codereview.stackexchange.com(http://www.codereview.stackexchange.com)。 –
由于row是不可以[添加到RowCollection](http://msdn.microsoft.com/en-us/library/9yfsd47w.aspx)的不可数类型,因此无法编译。编辑:它编译,因为有一个重载,它需要一个params对象[]。但是,您需要添加两个类型为“DataRow”的列。 –
yeah.rows是在anonumous类型。 – TechGuy