异常:System.ArgumentNullException:值不能为null

时间:2019-11-05 06:50:36

标签: c# sql .net stored-procedures

我正在尝试将数据调用到Excel并使用存储过程将Excel导出为电子邮件。但是,我有显示

的错误消息
  

Exception:System.ArgumentNullException:值不能为null。参数名称:来源

我收到一条错误消息,表明它来自我的数据表源

这是我从存储过程中调用SQL的地方:

public List<DTO_List_Non_Upload> CallNonUpload()
{
    var value = db.Database.SqlQuery<DTO_List_Non_Upload>("[WPSV2_Get_Non_Upload_Photo_Information] @DateFrom, @DateTo, @contractNo",
                   // get the cdr date for today  parameter: datetime
                   new SqlParameter("@DateFrom", "20191001"),
                   // oc 
                   new SqlParameter("@DateTo", "20191009"),
                   new SqlParameter("@contractNo", "Patrolmanwe")).ToList();

    return value;
}

这是我希望将数据作为函数EmailSender()返回的地方:

public List<DTO_List_Non_Upload> EmailSender()
{
    return patrol_Export_Services.CallNonUpload();
}

这是我要将sql数据获取到Excel的地方:

var mylist = new List<DTO_List_Non_Upload>();

mylist = EmailSender();

string filepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, System.Configuration.ConfigurationSettings.AppSettings["Exportexcel"].ToString());

ExcelXlsx excelXlsx = new ExcelXlsx(filepath);

DataTable Source = mylist.ToDataTable<DTO_List_Non_Upload>();
excelXlsx.RenderDataTableToSheet(0, Source, 1, 0, false);

错误:

  

异常:System.ArgumentNullException:值不能为null。

     

参数名称:来源

     

在System.Linq.Enumerable.Contains [TSource](IEnumerable 1 source, TSource value, IEqualityComparer 1比较器)
  在KS.Utils.Common.Extension.ToDataTable [T](IList`1数据,String [] ignoreProperties)在C:\ coding \ ks-photo \ branches \ NewOA4600007097_export \ Patrol_Excel_Export \ KS.utils \ Common \ Extension.cs中:第29行
  在C:\ coding \ ks-photo \ branches \ NewOA4600007097_export \ Patrol_Excel_Export \ Patrol_Excel_Export \ SchedulerPatrolExport.cs:第93行的Patrol_Excel_Export.SchedulerPatrolExport.run()中   在Patrol_Excel_Export.Program.Main(String [] args)中的C:\ coding \ ks-photo \ branches \ NewOA4600007097_export \ Patrol_Excel_Export \ Patrol_Excel_Export \ Program.cs:line 47

1 个答案:

答案 0 :(得分:2)

查看堆栈跟踪

  

位于System.Linq.Enumerable.Contains [TSource](IEnumerable1源,   TSource值,IEqualityComparer1比较器)位于   KS.Utils.Common.Extension。 ToDataTable

mylist为空

if(mylist == null)
   // Throw exceotpion or do something else
else {
   DataTable Source = mylist.ToDataTable<DTO_List_Non_Upload>();
   excelXlsx.RenderDataTableToSheet(0, Source, 1, 0, false);
}