当我
bool? isApproved = null;
db.Table.Where(item => item.IsApproved == isApproved).Count();最后一行的值为0。但是当我
db.Table.Where(item => item.IsApproved == null).Count();该值是正确的。
我使用的是SQLite、DbLinq和DbMetal。
发布于 2011-06-01 22:30:15
我看到它是这样做的:
db.Table.Where(
item => item.IsApproved.HasValue == isApproved.HasValue &&
(!item.IsApproved.HasValue || item.IsApproved.Value==isApproved.Value )
).Count();发布于 2011-06-01 22:30:38
嗯,我以前遇到过这个问题,我记得这个问题是在将LINQ查询转换为SQL语句时出现的。
第二个表达式在SQL中有一个equal:Where IsAproved is null
但第一个表达式没有,因为它是数据库中的值与C#可空变量之间的比较。
要解决这个问题,我建议尝试一下:
db.Table.Where(item => isApproved != null ? item.IsApproved == isApproved.Value
: item.IsApproved == null).Count();https://stackoverflow.com/questions/6202744
复制相似问题