You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Web API中使用LINQ从DataTable选取特定列插入另一DataTable

直接用LINQ筛选DataTable列并插入目标DataTable的实现方法

不需要先把DataTable转成列表,有两种更直接的方式实现需求:

方法一:LINQ投影+CopyToDataTable快速生成目标表

如果目标DataTable还未创建,或者需要直接生成结构匹配的结果表,可以用这种方式:

// 从源表投影出需要的三列,自动生成对应结构的DataTable
var filteredTable = sourceTable.AsEnumerable()
    .Select(row => new {
        ID = row.Field<int>("ID"), // 替换为实际列类型
        Name = row.Field<string>("Name"),
        PhNumber = row.Field<string>("PhNumber")
    })
    .CopyToDataTable();

// 若已有预先创建好结构的targetTable,直接导入行即可
targetTable.Merge(filteredTable);

方法二:直接遍历LINQ结果插入目标表

如果目标DataTable的结构已经提前定义完成,直接遍历源表行并插入更高效:

foreach (var sourceRow in sourceTable.AsEnumerable())
{
    DataRow newRow = targetTable.NewRow();
    // 赋值目标表的三列
    newRow["ID"] = sourceRow["ID"];
    newRow["Name"] = sourceRow["Name"];
    newRow["PhNumber"] = sourceRow["PhNumber"];
    targetTable.Rows.Add(newRow);
}

关键说明

  • AsEnumerable() 方法将DataTable转换为可LINQ查询的IEnumerable<DataRow>集合,是LINQ操作DataTable的基础。
  • Field<T>() 用于强类型获取列值,避免隐式类型转换带来的异常,建议根据实际列类型替换泛型参数。
  • 两种方法都无需额外将DataTable转成自定义列表,直接基于DataRow进行操作,更贴合DataTable的原生用法。

内容的提问来源于stack exchange,提问作者Fortunate Lucy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 03:33:46