表达式<func <partjointable,bool =“” >>谓词= null;在where条件(query.Where(谓词))中引发错误

时间:2018-08-15 10:05:14

标签: c# linq

 Expression<Func<PartJoinTable, bool>> predicate = null;

 var query2 = query.Join(partJoinTableRepository.GetPartJoinQuery(),
                         "x.PartID", "PartID", "inner" + row + "", null);
 foreach (var item1 in query)
 {
     list.Add(new PartJoinTable
     {
          ProductTypeId = item1.x.ProductTypeId,
          PartId = item1.x.PartId
     });

  }
  predicate = PredicateBuilder.True(list.AsQueryable());


  if (typeid=="3")
  {
      if (row == 0)
      {
          predicate1 = predicate1.And(z => cpaclassids.Contains(z.x.ProductTypeId.ToString()));
      }
      else
      {
          predicate = predicate.And(x => cpaclassids.Contains(x.ProductTypeId.ToString()));
       }
    }
    row++;
}
int lst1 = query.Where(predicate).Select(x => x).Distinct().ToList().Count();
  

无法从'System.Linq.Expressions.Expression>'转换为'System.Func <,bool>'

声明变量Expression<Func<PartJoinTable, bool>> predicate = null;

时,由于上面的错误,我无法检索结果

2 个答案:

答案 0 :(得分:1)

答案

  

Expression>谓词= null;引发错误   条件(query.Where(predicate))

if (predicate != null)
    query = query.Where(predicate);

int lst1 = query.Distinct().Count();

仅添加where子句。在.ToList()之前使用.Count(),您要投影从数据库到内存的每一行。

答案 1 :(得分:0)

您可以使用M1进行书写-它可以保存以下问题:?

这是完整代码:

if (predicate != null)

您只能写:int lst1 = query.Where(predicate)?.Select(x => x)?.Distinct()?.ToList()?.Count; -类Count中的属性