IQueryable with String.Format and PatIndex



当我尝试在两个数据库实体a、B上使用string.format,然后在它们上使用SqlFunctions.PatIndex时,我遇到了一个问题

     IQueryable<Data> dataRecords = DbSet<Data> M_Data;
     dataRecords = dataRecords.Where(c => SqlFunctions.PatIndex(sqlFilter, String.Format(A,B)) > 0);

其向实体抛出异常Linq无法识别方法字符串。格式

当我使用AsEnumarable()

dataRecords = dataRecords.AsEnumerable().Where(c => SqlFunctions.PatIndex(sqlFilter, String.Format(A,B)) > 0).AsQueryable();

这个函数只能从LINQ调用到实体

有人能建议怎么做吗。

您有两个方法调用:

  1. String.Format
  2. SqlFunctions.PatIndex

问题是,第一个不能转换为正确的SQL查询,第二个只能在LINQ to Entities查询上下文中执行。前者使你的第一次尝试失败,后者使你的第二次尝试失败。

但是,我不认为AB是您查询的数据的一部分。您应该能够在查询之外调用string.Format,然后使用结果:

var formattedString = String.Format(A,B);
dataRecords = dataRecords.Where(c => SqlFunctions.PatIndex(sqlFilter, formattedString) > 0);

相关内容

  • 没有找到相关文章

最新更新