我在代码中使用 Linq to Sql 和 Linq 的方法语法从数据库中查询所有表。今天遇到了一个奇怪的异常,这是我开始使用L2S以来第一次出现错误。
数据库表中有两列。并且“状态”列映射到具有枚举类型的程序:1(免费),2(贷款)。
。定义表类
private string Type;
private byte Status;
。查询代码
string _qNote = string.Empty;
string _qStatus = string.Empty;
List<DefineTableClass> _List = _dbObj.Table.Select(_obj => _obj)
.Where(_obj =>
(string.IsNullOrWhiteSpace(_qNote) || _obj.Note == _qNote)
&& (string.IsNullOrWhiteSpace(_qStatus) || Convert.ToInt32(_obj.Status) == Convert.ToInt32(_qStatus))
).ToList();
异常发生在
Convert.ToInt32(_obj.Status) == Convert.ToInt32(_qStatus)
我想知道这条线应该通过
(string.IsNullOrWhiteSpace(_qStatus)
由于_qStatus为Empty,不应该进行下一次检查。