LinqToExcel - InvalidCastException 导致 Object must implement Iconvertible 错误
LinqToExcel - InvalidCastException leading to Object must implement Iconvertible error
我正在使用以下代码在 LinqToExcel 中查询 excel 文件:
var excelFile = new LinqToExcel.ExcelQueryFactory(@"\"+txtFileName.Text.Replace(@"\",@"\"));
var properties = from p in excelFile.Worksheet<Property>()
where AssessmentID != null
select p;
foreach (var autoP in properties)
doSomething();
当我查看运行时调试器时,我在查看 properties 变量的 "Results View" 时看到一个 "InvalidCastException"。所以,我假设我的 class 定义有些奇怪。我还假设我不需要将 class 的所有成员映射到 excel 文件,而只是我认为合适的那些。
所以,这也是 class 的定义:
public class Property
{
[DataMember]
public int? Year { get; set; }
[DataMember]
public string ChangeReason { get; set; }
[DataMember]
public string AssessmentID { get; set; }
[DataMember]
public string CallBackNotes { get; set; }
[DataMember]
public string InspectionNotes { get; set; }
[DataMember]
public string Notes { get; set; }
[DataMember]
public bool Authorization { get; set; }
[DataMember]
public string ChargeStatus { get; set; }
[DataMember]
public string LegalLandDesc { get; set; }
[DataMember]
public string Address { get; set; }
}
linkGitHub 上的 linqToExcel 源代码:LinqToExcel
泛型比我见过的更复杂,而且我(显然)需要复习一下。
是否有什么明显的我遗漏的东西会导致这个问题?关于在哪里查看或如何解决这些错误有什么想法吗?
查询的 where 子句是导致错误的原因。它引用了在上下文中不适用的 null 关键字。
我将其更改为:
where !String.IsNullOrEmpty(p.AssessmentID)
这解决了我的问题。
自我提醒:继承他人代码时,先检查基础知识!
我正在使用以下代码在 LinqToExcel 中查询 excel 文件:
var excelFile = new LinqToExcel.ExcelQueryFactory(@"\"+txtFileName.Text.Replace(@"\",@"\"));
var properties = from p in excelFile.Worksheet<Property>()
where AssessmentID != null
select p;
foreach (var autoP in properties)
doSomething();
当我查看运行时调试器时,我在查看 properties 变量的 "Results View" 时看到一个 "InvalidCastException"。所以,我假设我的 class 定义有些奇怪。我还假设我不需要将 class 的所有成员映射到 excel 文件,而只是我认为合适的那些。
所以,这也是 class 的定义:
public class Property
{
[DataMember]
public int? Year { get; set; }
[DataMember]
public string ChangeReason { get; set; }
[DataMember]
public string AssessmentID { get; set; }
[DataMember]
public string CallBackNotes { get; set; }
[DataMember]
public string InspectionNotes { get; set; }
[DataMember]
public string Notes { get; set; }
[DataMember]
public bool Authorization { get; set; }
[DataMember]
public string ChargeStatus { get; set; }
[DataMember]
public string LegalLandDesc { get; set; }
[DataMember]
public string Address { get; set; }
}
linkGitHub 上的 linqToExcel 源代码:LinqToExcel 泛型比我见过的更复杂,而且我(显然)需要复习一下。
是否有什么明显的我遗漏的东西会导致这个问题?关于在哪里查看或如何解决这些错误有什么想法吗?
查询的 where 子句是导致错误的原因。它引用了在上下文中不适用的 null 关键字。 我将其更改为:
where !String.IsNullOrEmpty(p.AssessmentID)
这解决了我的问题。
自我提醒:继承他人代码时,先检查基础知识!