简体   繁体   中英

How to convert result of linq query on two datatable into final datatable in c# winforms

I have two data tables one stores information relating to some event details and another one contains user information details. The two tables are : -

  1. Event details 在此处输入图片说明

  2. User details 在此处输入图片说明

Now when i apply a linq query to left join my event details table with user details table using ack_by equals user_id then linq query is properly performed but now i want to convert my linq query result back to another datatable the how to do that.

My linq query code is something like that : -

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")
                    });

My question is simple that how to get result of this linq operation back into another data table. Thankyou!

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>();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM