2

行フィルターを使用するデータ テーブルがあります。必要な一致の種類の例を次に示します。アスタリスクのみを使用します。

確認している文字列: 「こんにちは、お元気ですか」

フィルタ: "*" - 一致フィルタ: "Hello*" - 一致フィルタ: "Hello" - 一致フィルタなし: "*how*" - 一致フィルタ: "Hello*you" - 一致フィルタ: "H*l*w* r*u" - マッチ

3 つ以上のアスタリスクを使用しようとすると、「文字列パターンが無効です」という例外が発生します。

私は何をすべきか?

4

2 に答える 2

1

行フィルターは、文字列の途中で * を使用できません。代わりにこのようなものを使用します。
使用法:

var rows = dt.AsEnumerable()
           .Where(x => x.Field<string>("Name").Like("H*l*w*r*u"));

好きな機能:

public static class Extensions
{
    public static bool Like(this string s, string pattern, RegexOptions options = RegexOptions.IgnoreCase)
    {
        return Regex.IsMatch(s, pattern, options);
    }
}
于 2012-06-21T16:32:28.223 に答える
0

ワイルドカード フィルターの代わりに % を試してください。

System.Data.DataRow[] y = x.Select("Col2 LIKE 'smith[%]%'");
System.Data.DataRow[] y = x.Select("Col2 = 'smith%'");
于 2012-06-21T19:29:07.803 に答える