当我尝试在两个数据库实体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调用到实体
有人能建议怎么做吗。
您有两个方法调用:
String.Format
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);