2014-11-03 66 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