是否有人可以解释为什么以下不起作用?: 模型定义如下(非常简单的版本)
public class Monument
{
[Key]
public int? MonumentId { get; set; }
public string Name { get; set; }
}
我的存储库实现中的Find方法定义如下:
public virtual IQueryable<T> Find(Expression<Func<T, bool>> where)
{
return _dbset.Where(where);
}
where参数以这种方式获取值:
whereClause = c => ( (FilteringRecord.MonumentId <= 0 ?
true : c.MonumentId == FilteringRecord.MonumentId)
&& (String.IsNullOrEmpty(FilteringRecord.Name) ?
true :c.Name.Contains(FilteringRecord.Name)) );
因此,如果FilteringRecord.MonumentId的值等于数字,我会得到所需的记录,但如果FilteringRecord.Name有一个值则完全被忽略!!为什么???
同样适用于第一版Entity Framework或LINQ to SQL !!
提前致谢!!
答案 0 :(得分:0)
原来表达式正在按预期工作!该错误是由UI中的错误绑定(这是一个WPF应用程序)引起的,为FilteringRecord提供了错误的值!