我正在使用以下代码查询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();
当我查看运行时调试器时,我会在查看属性变量的“结果视图”时看到“InvalidCastException”。所以,我假设我的班级定义有一些时髦的东西。我还假设我不需要将类的所有成员映射到excel文件,而只需要我认为合适的那些。 所以,这里也是类定义:
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; }
}
以下是GitHub上linqToExcel源代码的链接:LinqToExcel 泛型比我看到的更复杂,并且是我(显然)需要清理的东西。
有什么东西明显我错过会导致这个问题吗?关于在哪里寻找或如何解决这些错误的任何想法?
答案 0 :(得分:8)
查询的where子句是导致错误的原因。它引用了null关键字,该关键字在上下文中不适用。 我改成了:
where !String.IsNullOrEmpty(p.AssessmentID)
这解决了我的问题。
自我注意:从其他人继承代码时,请先检查基础知识!