我想在两个表之间创建连接,结果将包括所有两个表列。 我想这样做而不指定具体的列名,只需选择all,因为我不知道这两个表包含多少列,也不知道它们的名称。
我只想创建两个表之间的连接,结果将包括两个表格列。
我该怎么做? 应该是什么结果类型?
我试过了:
var res = from t1 in ds1.Tables["Table1"].AsEnumerable()
join
t2 in ds1.Tables["Table2"].AsEnumerable()
on t1.Field<string>("TrID") equals t2.Field<string>("TrID")
select new { t1, t2 };
但是我得到一个奇怪的类型,因为我无法做任何事情,我无法将其转换为dataTable,Dataset或在gridview中显示它。
例如,获取一个包含[TrID],[SP],[SP2]列的表,而无需使用以下三列创建匿名类型:
表1 TrID SP Asaf1 Asaf2 F1 K2 Asaf1 D2 H1 F1
表2
TrID SP2
Asaf1 Dor2
Asaf1 U1
R1 W1
I1 Y3
答案 0 :(得分:0)
没有办法神奇地合并你的两张桌子。如果您需要新的DataTable
,则需要使用相应的列创建一个新的DataRow
并相应地添加行。或者,您确实可以将匿名类型绑定到控件,但不能绑定当前匿名类型的两个var res = from t1 in ds1.Tables["Table1"].AsEnumerable()
let id = t1.Field<string>("TrID")
join t2 in ds1.Tables["Table2"].AsEnumerable()
on id equals t2.Field<string>("TrID")
select new {
TrID = id,
SP = t1.Field<string>("SP"),
SP2 = t2.Field<string>("SP2")
};
属性。相反,您需要提取所需的字段:
res
然后,您可以将TrID
设置为数据源并绑定到SP
,SP2
和{{1}}。