c# LINQ DataTable substraction <p>i have two DataTables which has different columns but one column is same.</p> <p>i want to get new DataTable which contains row from dt1 which are not exist in dt2.</p> <p>how can i do it using LINQ?</p> <p>that's is my current code, but it work only for Datatables with same columns:</p> <pre><code>private void Delete_HPM_Deleted_Points(int YellowCard_Request_ID) { DataTable dt_hpm_points_DB = DataAccessLayer.Get_YellowCard_Request_HPM_Points(YellowCard_Request_ID); //dt_hpm_points_DB.Columns.Remove("HPM_Tool_ID"); //dt_hpm_points_DB.Columns.Remove("HPM_Point_Message"); //dt_hpm_points_DB.Columns.Remove("HPM_Point_isDisabled"); //dt_hpm_points_DB.Columns.Remove("HPM_Point_Comments"); DataTable dt_hpm_points_Local = UserSession.Get_User_YC_HPM_Added_Points_DATATABLE(); //dt_hpm_points_Local.Columns.Remove("HPM_Tool_ID"); //dt_hpm_points_Local.Columns.Remove("HPM_Point_Message"); //var rowsInFirstNotInSecond = dt_hpm_points_DB.Rows.Where(r1 =&gt; !dt_hpm_points_Local.Rows.Any(r2 =&gt; r1.ID == r2.ID)); DataTable dt_points_to_remove = dt_hpm_points_DB.AsEnumerable().Except(dt_hpm_points_Local.AsEnumerable(), DataRowComparer.Default).CopyToDataTable(); foreach (DataRow dr in dt_points_to_remove.Rows) { DataAccessLayer.Delete_YellowCard_Request_HPM_Point(YellowCard_Request_ID, dr["HPM_Point_ID"].ToString()); } } </code></pre>