LINQ查找表列是否包含值和返回对象列表

时间:2017-07-27 18:10:39

标签: c# sql-server entity-framework linq

我正在从前端向我的后端服务传递一个对象(具有属性:'Key'和'Value'),如果给定值(obj.value)包含在特定列(obj.key)中,则必须查找该服务在特定的SQL Server数据库表中,返回转换为对象的所有匹配行的列表。

但是给定的代码并不适用于所有情况,因为大多数情况下它返回“未设置为对象实例的对象”错误。

agencies = _unitOfWork.RatingAgencyRepository.GetByType(p => p.GetType().GetProperty(filter.key)
           .GetValue(p, null).ToString().ToLower().Contains(filter.value.ToLower().Trim())).ToList();

由于我对LINQ和EF并不熟悉,我一直在努力修复同事写的一整天没有任何结果。

提前致谢。

1 个答案:

答案 0 :(得分:0)

以下之一为null。也许不止一个。

  1. 过滤
  2. filter.key
  3. 名称filter.key
  4. 表示的对象之一中的属性值
  5. filter.value
  6. 由于你的表达式在视觉上很难解析,在运行时异常的情况下甚至更难调试,我的建议是将过滤器重构为更合理的东西。

    Kandydata