2014-11-03 37 views
0

我面临的一个问题,当我尝试在2分贝实体使用string.format A,B,然后对他们使用SqlFunctions.PatIndexIQueryable的用的String.Format和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调用到实体

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

回答

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); 
+0

A,B是表M_Data的列名 – Buzz 2014-11-03 06:38:55