.net – 如何处理System.Data.DataTableExtensions.CopyToDataTa
嘿伙计们,所以我遇到了一些可能是Extension方法.CopyToDataTable中的缺陷.
导入(在VB.NET中)System.Data.DataTableExtensions然后针对IEnumerable调用该方法使用此方法.如果要使用LINQ过滤数据表,然后在最后还原DataTable,则可以执行此操作. 即: 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会抛出异常,因为没有DataRows. 为什么? 正确的行为应该是返回一个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()返回的行 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |