如何解决如何在不使用循环的情况下将行集合由linq查询获得分配给数据表?
| 我的场景中,数据表可能包含大量行。结果,我无法使用循环来迭代和更新数据表。 我正在使用以下代码来获取行集合, from row in CSVDataTable.AsEnumerable()
where CSVDataTable.Columns.Cast<DataColumn>().Any(col => !row.IsNull(col))
select row;
任何人都请告诉我如何在不使用循环的情况下将上述代码的结果分配给数据表。
解决方法
我可以通过以下代码将Linq查询结果分配给数据表,
// Create a DataTable from Linq query.
IEnumerable<DataRow> query = from row in CSVDataTable.AsEnumerable()
where CSVDataTable.Columns.Cast<DataColumn>().Any(col => !row.IsNull(col))
select row; //returns IEnumerable<DataRow>
DataTable CSVDataTableWithoutEmptyRow = query.CopyToDataTable<DataRow>();
请参阅链接以获取更多详细信息,
http://msdn.microsoft.com/en-us/library/bb386921.aspx
, 您正在尝试避免我认为的不可避免的事情。
您有一个“懒惰”查询,该查询返回IEnumerable<DataRow>
。无论何时尝试访问它代表的“ 3”集合,该查询都将被枚举。
唯一的区别是直接进行操作还是使用DataTable
的某种方法隐藏该实现细节。
我将执行以下操作:
DataTable table;
table.BeginLoadData();
foreach (DataRow row in query)
{
table.ImportRow(row);
}
table.EndLoadData();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。