0

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

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

它向实体抛出异常 Linq 无法识别方法 string.Format

当我使用AsEnumarable()

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

比它抛出这个函数只能从 LINQ 调用到实体

任何人都可以建议如何做到这一点。

4

1 回答 1

0

您有两个方法调用:

  1. String.Format
  2. SqlFunctions.PatIndex

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

但是,我没有看到A也不B是您查询的数据的一部分。您应该能够在string.Format查询之外调用,然后使用结果:

var formattedString = String.Format(A,B);
dataRecords = dataRecords.Where(c => SqlFunctions.PatIndex(sqlFilter, formattedString) > 0);
于 2014-11-03T05:28:27.980 回答