我在两个表上进行交叉连接时遇到问题。这是我的代码:
public DataTable JoinTable(DataTable piTable1, DataTable piTable2)
{
if (piTable1 == null || piTable2 == null)
return new DataTable();
var joinResult = from parent in piTable1.Rows.Cast<DataRow>()
from child in piTable2.Rows.Cast<DataRow>()
select new {parent, child};
return joinResult.CopyToDataTable();
}
我得到的结果为两个DataRowCollection
,但它无法将其转换为DataTable
。如何在两个DataTable
上进行交叉连接?
答案 0 :(得分:0)
您只需手动完成:
1)创建结果DataTable
2)从两个表中添加列(请记住,输入表中的列名可能具有保存名称,因此您需要约定来处理它 - 例如包括输入表名或smth)
3)并将值从连接结果实体复制到相应的列
答案 1 :(得分:0)
试试这种方式
public DataTable JoinTable(DataTable piTable1, DataTable piTable2)
{
DataTable JoinTable = new DataTable();
if (piTable1 == null || piTable2 == null)
return new DataTable();
var q = from parent in piTable1.AsEnumerable()
from child in piTable2.AsEnumerable()
select new
{
property1 = parent.Field<T>("PropertyName1"),
property2 = parent.Field<T>("PropertyName2"),
property3 = child.Field<T>("PropertyName3"),
property4 = child.Field<T>("PropertyName4")
};
JoinTable.Rows.Add(q);
return JoinTable;
}
答案 2 :(得分:0)
我使用下面的代码对我有用。我不得不进一步将q转换为数组,然后列表然后表格,因为我无法将q直接转换为表格。以下是可能对某人有帮助的代码。
<?php
add_action( 'wp_ajax_my_action', 'my_action' );
function my_action() {
global $wpdb;
$id = $_POST['id_took'];
$str = $_POST['sel'];
$table_name_payment = $wpdb->prefix . "online_booking_system_model";
if($whatever2=="Payment completed")
{
$result_pay = $wpdb->query("UPDATE $table_name_payment SET
payment_status = $sel
WHERE id = $id ");
echo "success";
}
}
?>