ラムダベースのLinq式を文字列から作成するのが難しいです。ここでは、このサンプルオブジェクト/クラスを使用して、私の基本的なケースである:C#の文字列から動的ラムダベースのLinq式を作成するには?
public class MockClass
{
public string CreateBy { get; set; }
}
基本的に私はこのような文字列を変換する必要があります:/ LINQの式を述語の中へ
string stringToConvert = “x => x.CreateBy.Equals(filter.Value, StringComparison.OrdinalIgnoreCase”;
:
System.Linq.Expressions.Expression<Func<T, bool>> or in this example
System.Linq.Expressions.Expression<Func<MockClass, bool>>
したがって、以下のWhereメソッド内のLinq式と同等です。
query = query.Where(x => x.CreateBy.Equals(filter.Value,
StringComparison.OrdinalIgnoreCase));
私は以下のヘルパーを使用しようとしましたが、前もって知られていない文字列からlinq式を構築できるようにするために、 : http://www.albahari.com/nutshell/predicatebuilder.aspx
http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx(それは今だけでなく、「DynamicQuery」と呼ばれるNuGetパッケージとして利用可能です)
なぜ文字列に最初に置いていますか?ユーザーはその式を入力していますか?適切なタイプで保存してください。 –
デベロッパー以外のユーザーは、クエリ文字列に渡された検索構文に類似したクエリ構文を動的に入力しています。膨大な数の型やネストされた型の任意のプロパティまたはサブプロパティが可能な場合は、適切な型を取得するのが少し難しいです。 – jon333