【问题标题】:CopyToDataTable Method - ArgumentNullExceptionCopyToDataTable 方法 - ArgumentNullException
【发布时间】:2013-10-31 06:20:37
【问题描述】:

我在 CopyToDataTable 方法中收到此错误。

ArgumentNullException 值不能为空。 参数名称:来源

按照 - http://msdn.microsoft.com/en-us/library/bb669096%28v=vs.110%29.aspx 的程序进行

public DataTable GetAllRecords()
  {
    try
     {
       DataTable dt = new DataTable();
       IEnumerable<DataRow> query = ((from p in MedianDB.tblCountries
                  select p).OrderBy(p => p.CountryName)) as IEnumerable<DataRow>;
       query.CopyToDataTable<DataRow>(dt,LoadOption.PreserveChanges);
       return dt;                
     }
   catch (Exception ex)
     {
       throw ex;
     }
  }

使用 .Net Framework 4.0,实体数据模型

【问题讨论】:

  • MSDN 链接显示How to: Implement CopyToDataTable&lt;T&gt; Where the Generic Type T Is Not a DataRow。你的是DataRow
  • 是的...我的第一个猜测是as IEnumerable&lt;DataRow&gt; 导致分配给query 的空值。如果您使用强制转换而不是 as,如果类型实际上不是您所期望的,您将收到强制转换异常。
  • 您真正想在这里实现什么? DataTable 是否比 from/select/orderby 的原始结果更好?更多上下文可能会帮助我们为您找到更好的答案。此外,MedianDB.tblCountries 的特定类型也会有所帮助。
  • 我只想返回一个数据表。 GetAllRecords 是我用于许多表单的通用函数,因此 CopyToDataTable 方法对我来说很容易......我现在如何更改我的 linq 以使用 copytodatatable

标签: c# linq


【解决方案1】:

好的,这很简单。你会得到一个ArgumentNullException,那就是documented as such

源 IEnumerable 序列为空或目标 DataTable 为空。

我们知道dt 不是null,所以这意味着问题是你的querynull。因此,要修复它,您应该能够利用 AsEnumerable 扩展:

IEnumerable<DataRow> query = (from p in MedianDB.tblCountries
                              select p)
                             .OrderBy(p => p.CountryName)
                             .AsEnumerable();
query.CopyToDataTable<DataRow>(dt,LoadOption.PreserveChanges);

您不能只将获得的结果转换为IEnumerable&lt;DataRow&gt;,您需要将其转换为IEnumerable&lt;DataRow&gt;此代码as IEnumerable&lt;DataRow&gt; 为您提供@987654332 @。


仅供参考,这个catch 实际上比让它抛出更糟糕,因为您在此过程中丢失了堆栈跟踪:

catch (Exception ex)
{
    throw ex;
}

如果你真的不打算处理它,就把 try/catch 一起去掉。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多