如何给DataTable,DataRow 手动赋值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何给DataTable,DataRow 手动赋值相关的知识,希望对你有一定的参考价值。

参考技术A 代码如下:
DataTable MyDataTable = new DataTable();

MyDataTable.Columns.Add(new DataColumn("学生编号", typeof(string)));
MyDataTable.Columns.Add(new DataColumn("姓名", typeof(string)));
MyDataTable.Columns.Add(new DataColumn("学校", typeof(string)));
MyDataTable.Columns.Add(new DataColumn("联系电话", typeof(string)));
MyDataTable.Columns.Add(new DataColumn("家庭住址", typeof(string)));

DataRow dr;
for (int i = 0; i <= 10; i++)

dr = MyDataTable.NewRow();
r["学生编号"] = Guid.NewGuid().ToString();
dr["姓名"] = "222";
dr["学校"] = "444";
dr["联系电话"] = "555";
dr["家庭住址"] = "666";
MyDataTable.Rows.Add(dr);

如何将 DataTable.Select() 结果传递给新的 DataTable?

【中文标题】如何将 DataTable.Select() 结果传递给新的 DataTable?【英文标题】:How to pass DataTable.Select() result to a new DataTable? 【发布时间】:2011-06-20 11:47:27 【问题描述】:

我有一个名为 dt2DataTable 带有数据。我调用它的Select 方法来获取一些特定的行。

DataRow[] foundRows;

expression = "parent_id=1";

foundRows = dt2.Select(expression);

如何将Select-方法结果传递给新的DataTable——比如FilteredData

【问题讨论】:

【参考方案1】:

您可以使用CopyToDataTable,在IEnumerable&lt;DataRow&gt; 类型上可用。

var filteredData = dt2.Select(expression).CopyToDataTable();

【讨论】:

【参考方案2】:

为什么不改用DataView

DataView view = new DataView(dt2);
view.RowFilter = "parent_id = 1";

DataView 的行为方式与DataTable 的行为方式非常相似,另外还有一个好处是,对底层DataTable(在这种情况下为dt2)的任何更改都会自动反映在DataView.

【讨论】:

【参考方案3】:

为了清楚起见,Select 方法返回一个 DataRow 类型的数组。这就是为什么我们需要使用CopyToDataTable()。亚历克斯的回答很好。但是,如果 Select 没有返回任何行,CopyToDataTable() 将抛出 InvalidOperationException

所以在使用CopyToDataTable()之前测试至少有一个DataRow

var filteredDataRows = dt2.Select(expression);

var filteredDataTable = new DataTable();

if(filteredDataRows.Length != 0)
    filteredDataTable = filteredDataRows.CopyToDataTable();

【讨论】:

为什么使用var filteredDataRows 而不是DataTable[] filteredDataRows。您的解决方案效果很好,所以我很好奇 @DaveHampel 当您有点懒惰或为了更好地监督代码时,请使用var,变量名称相互对齐。它意味着相同并且编译为相同并且确实是强类型的。它只是不明确。我通常使用var,当它从作业中显而易见时。我不使用DataTable table = New DataTable();,但我使用MyFancyClass mfc = SomeFunctionReturningAnMFC() 更多信息intellitect.com/when-to-use-and-not-use-var-in-c 和***.com/a/4868500/1093940

以上是关于如何给DataTable,DataRow 手动赋值的主要内容,如果未能解决你的问题,请参考以下文章

DataRow[]

DataTable中的DataRow行数据复制给另一个DataTable表

C# ASP.NET怎么手动给GridView赋值,不从数据库中读取?

如何检查 DataTable 是不是包含 DataRow?

如何让 ReportViewer 显示多页(例如,每个 DataRow 一页)?

如何在 Flutter 的 DataTable 中监听 DataRow 的点击