2016-05-23 8 views
0

私のプロジェクトで配列をフィルタリングするためにDynamic LINQを使用しています。ライブラリは NuGet Gallery linkまたは Codeplex linkからダウンロードできます。 NuGetリンクからバージョン1.0.6を使用しています。 LINQと同じですが、文字列を使用して条件を指定できます。例:myArray.Where(myDynamicQueryString)ダイナミックLINQクエリ文字列を作成する方法* abc * def *

左と右の式と演算子に基づいて、その場でQueryStringを作成します。例えば、私のクエリは

  1. ABC < 3であれば、私の動的なクエリ文字列になります(ABC < 3)
  2. XYZ == 5.0は、myDynamicQueryStringはなります(XYZ = 5)
  3. デフ== "名前"、myDynamicQueryStringは(DEF = "名前")== "筋力*"、myDynamicQueryStringは(var.StartsWith( "筋力"))
  4. VAR == "*筋力" になり、myDynamicQueryString
  5. VARになります(var.EndsWith( "Str"))
  6. var == "* Str *"、myDynami cQueryStringは(var.Contains( "Str"))

ここで、* abc * def *のようなクエリのクエリ文字列はどうでしょうか?

私はそれが何かで始まり、何かで終わり、abcとdefの間に何かを持つことができますが、abcとdefはその特定の順序で現れなければならないことを知っています。しかし、StartsWith/EndsWith/Containsを使用してクエリ表現に変換するにはどうすればよいですか?(私が知っているものはありますか他のものがあれば教えてください)

答えて

1

IndexOf 。存在する場合は部分文字列の開始インデックスを返し、そうでない場合は-1を返します。私たちは、文字列XabcXdefXabcを使用する場合

var.Contains("abc") && var.Contains("def") && 
    var.IndexOf("abc") > var.IndexOf("def") 

例えば、var.IndexOf("abc")1得られますし、var.IndexOf("def")5を得られます。

関連する問題