首页 > 解决方案 > 如何将两个数据表上的linq查询结果转换为c#winforms中的最终数据表

问题描述

我有两个数据表,一个存储与某些事件详细信息相关的信息,另一个包含用户信息详细信息。这两个表是: -

  1. 活动详情在此处输入图像描述

  2. 用户详情在此处输入图像描述

现在,当我使用 ack_by 等于 user_id 应用 linq 查询左连接我的事件详细信息表和用户详细信息表时,linq 查询已正确执行,但现在我想将我的 linq 查询结果转换回另一个数据表,如何做到这一点。

我的 linq 查询代码是这样的: -

DataTable recordsDetails = (DataTable)(arrayList)[0];
        DataTable userDetailsTable = (DataTable)(arrayList)[2];            
        var query = (from dt1row in recordsDetails.AsEnumerable()
                    join dt2row in userDetailsTable.AsEnumerable() on dt1row.Field<int>("ack_by") equals dt2row.Field<int>("user_id")                      
                    select new 
                    {
                      event_name = dt1row.Field<string>("event_name"),
                      event_id = dt1row.Field<int>("event_id"),
                      event_severity = dt1row.Field<int>("event_severity"),
                      event_time = dt1row.Field<DateTime>("event_time"),
                      ack_by = dt1row.Field<int>("ack_by"),
                      ack_time = dt1row.Field<DateTime>("ack_time"),
                      zone_id = dt1row.Field<string>("zone_id"),
                      camera_id = dt1row.Field<int>("camera_id"),
                      camera_name = dt1row.Field<string>("camera_name"),
                      user_name = dt2row.Field<string>("username")
                    });

我的问题很简单,即如何将此 linq 操作的结果返回到另一个数据表中。谢谢!

标签: c#winformslinq

解决方案


IEnumerable<DataRow> query = (from dt1row in recordsDetails.AsEnumerable()
join dt2row in userDetailsTable.AsEnumerable() on dt1row.Field<int>("ack_by") equals dt2row.Field<int>("user_id")                      
select new 
{
  event_name = dt1row.Field<string>("event_name"),
  event_id = dt1row.Field<int>("event_id"),
  event_severity = dt1row.Field<int>("event_severity"),
  event_time = dt1row.Field<DateTime>("event_time"),
  ack_by = dt1row.Field<int>("ack_by"),
  ack_time = dt1row.Field<DateTime>("ack_time"),
  zone_id = dt1row.Field<string>("zone_id"),
  camera_id = dt1row.Field<int>("camera_id"),
  camera_name = dt1row.Field<string>("camera_name"),
  user_name = dt2row.Field<string>("username")
});

DataTable Table = query.CopyToDataTable<DataRow>();

推荐阅读