gpt4 book ai didi

.net - 如何处理 System.Data.DataTableExtensions.CopyToDataTable() 中的缺陷

转载 作者:行者123 更新时间:2023-12-03 22:19:04 24 4
gpt4 key购买 nike

我遇到了一些可能是扩展方法中的缺陷 .CopyToDataTable .
此方法由导入使用(在 VB.NET 中)System.Data.DataTableExtensions然后针对 IEnumerable 调用该方法。如果要使用 LINQ 过滤数据表,然后在最后恢复数据表,则可以执行此操作。
IE:

Imports System.Data.DataRowExtensions
Imports System.Data.DataTableExtensions

Public Class SomeClass
Private Shared Function GetData() As DataTable
Dim Data As DataTable

Data = LegacyADO.NETDBCall


Data = Data.AsEnumerable.Where(Function(dr) dr.Field(Of Integer)("SomeField") = 5).CopyToDataTable()


Return Data

End Function
End Class
在上面的示例中,“WHERE”过滤可能不会返回任何结果。如果发生这种情况,CopyToDataTable 会抛出异常,因为没有 DataRow。
为什么?
正确的行为应该是返回一个 Rows.Count = 0 的 DataTable。
任何人都可以想到一个干净的解决方法,这样调用 CopyToDataTable 的人就不必知道这个问题吗?
System.Data.DataTableExtensions 是一个静态类,因此我无法覆盖该行为。有任何想法吗?我错过了什么吗?
更新:
我已将此作为问题提交给 Connect .我仍然想要一些建议,但如果您同意我的意见,您可以通过上面的链接在 Connect 上投票
干杯

最佳答案

someDataTable.AsEnumerable().Where(r => r.Field<string>("SomeField") == "SomeValue").AsDataView().ToTable();
.AsDataView().ToTable()返回一个与 someDataTable 结构相同的空表如果现在有从 .Where() 返回的行

关于.net - 如何处理 System.Data.DataTableExtensions.CopyToDataTable() 中的缺陷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/636765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com