2017-01-18 39 views
0

LinqからSqlを選択すると、ワイルドカードを使用した文字列検索が必要になります。これまでのところ、私は私がのためのサポートを見つけることができないよう何次Linq to SQL、中文字列%ワイルドカードのサポートはありますか?

%token = column.EndsWith(value) 
token% = column.StartsWith(value) 
%token% = column.Contains(value) 

を行うことが可能であることを理解

to%ken 

は、どのような方法でサポートすることをですか?

アップデート - しかし、これは私が持っている用法で動作するようには思えないこの

エラーをしようとしたときに私が得る

if (!object.Children.Any() || 
    !object.Children.OrderByDescending(t => t.Version) 
     .First().MetaDataPairs.Any(mdp => SqlMethods.Like(mdp.Value.ToLower(), stringmatch))) continue; 

とエラー以下のコードを - 人々がSqlMethods.Likeを示唆していますメソッド 'Boolean Like(System.String、System.String)'はクライアントで を使用できません。それはSQLへの変換のためだけです。あなたはより一般的なアプローチをしたい場合、私は正規表現を使用することをお勧めします、SQLクエリにLINQのための

Where SqlMethods.Like(entity.StringProperty, "tok%en");  

これだけ作品:名前空間SqlMethods

+0

のような正規表現を使用して

SqlMethods.Like 

2)を歌う受け付けられませんが、ここを参照してくださいライアンからのより多くのupvoted答え、これはあなたが探しているものでしょうか? http://stackoverflow.com/questions/1040380/wildcard-search-for-linq – Equalsk

+0

これもチェックしてくださいhttp://stackoverflow.com/questions/3000153/linq-to-sql-wildcards –

+0

@Equalskこれは具体的ですLinqからSqlへ –

答えて

1

like方法があり、あなたが好き、それを使用することができます、のようなもの:

.Where(entity => Regex.matches(entity.StringProperty, @"(?:tok)(\w*)(?:en)"); 
+0

他のLinq構文でこれを行う方法はありますか?この構造では機能しないようです。 (上記) – NZJames

+0

例を投稿できますか? –

0

2提案:

1)U

System.Text.RegularExpressions.Regex regEx = new System.Text.RegularExpressions.Regex("token"); 
関連する問題