0

string.format2 つの db エンティティ 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 to Entities からのみ呼び出すことができます

誰でもこれを行う方法を提案できますか。

4

1 に答える 1

0

2 つのメソッド呼び出しがあります。

  1. String.Format
  2. SqlFunctions.PatIndex

問題は、最初のものは適切な SQL クエリに変換できず、2 番目のものは LINQ to Entities クエリ コンテキスト内でしか実行できないことです。前者は最初の試行を失敗させ、後者は 2 回目の試行を失敗させます。

しかし、私はあなたがクエリしたデータを見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 に答える