c# 执行DataTable中的查询返回新的DataTable

这段代码展示了如何使用DataTable的查询方法来过滤和获取数据。通过`GetNewDataTable`函数,可以根据特定条件筛选源DataTable,并创建一个新的DataTable实例。此外,还演示了使用`Select`方法获取满足条件的第一条记录,以及将DataTable转换为DataRow数组和List<Guid>的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调用

   //task 源数据DataTable
   DataTable newdt = GetNewDataTable(task, "Remark='" + precode + "' and taskType='Preload_end'  and BankOrderId='" + _orderid + "'", "");


  /// 执行DataTable中的查询返回新的DataTable
    /// </summary>
    /// <param name="dt">源数据DataTable</param>
    /// <param name="condition">查询条件</param>
    /// <returns></returns>
    private static DataTable GetNewDataTable(DataTable dt, string condition, string sortstr)
    {
        DataTable newdt = new DataTable();
        newdt = dt.Clone();
        DataRow[] dr = dt.Select(condition, sortstr);
        for (int i = 0; i < dr.Length; i++)
        {
            newdt.ImportRow((DataRow)dr[i]);
        }
        return newdt;//返回的查询结果
    }

DataTable DataRow DataRow[] List 的简单使用

 DataTable newdt = GetNewDataTable(task, "Remark='" + precode + "' and taskType='Preload_end'  and BankOrderId='" + _orderid + "'", "");


 DataRow preloadout = task.Select(" Remark='" + precode + "' and taskType='Preload_out' and BankOrderId='" + _orderid + "' ", "OperTime desc ").FirstOrDefault();


 //clrtotalretailpreloadList 是 DataTable 类型
DataRow[] clrretailloadList = clrtotalretailpreloadList.Select("TaskDetailId='" + _orderid + "' and IsEndPack='true' ").ToArray();
 
List<Guid> loadIds = clrtotalretailpreloadList.AsEnumerable().Select(a => a.Field<Guid>("Id")).ToList();