0

特定の文字列値の LINQ クエリの結果を確認するにはどうすればよいですか?

次のlinqクエリがあります:

IEnumerable<DataRow> rows = searchParamsTable.AsEnumerable()
                                        .Where(r => r.Field<String>("TABLE") == tableNumbers[i].ToString()
                                        && r.Field<String>("FIELD ") == fieldName[i]);

そのクエリの結果に (テキスト ボックスから渡された) 文字列 "wildcardSearchString" が含まれているかどうかを確認したいと思います。

4

4 に答える 4

1

DataTable?の組み込みの検索機能をご存知かどうかわかりません。Selectメソッドを使用できます。

DataRow[] rows = searchParamsTable
    .Select("TABLE = 'Table1' AND FIELD like '%wildcardSearchString%'");

Linqは問題ありませんが、常に必要なわけではありません:)。

于 2012-07-31T21:01:10.773 に答える
1
var searchRows = 
        rows.Where(tr => tr.ItemArray
            .Any(ti => ti.ToString().IndexOf("wildcardSearchString", StringComparison.CurrentCultureIgnoreCase) > 0))

これにより、返された各行が調べられ、「wildcardSearchString」が行アイテムの文字列表現に含まれているかどうかが確認されます (大文字と小文字の区別は無視されます)。ただし、ここに問題があります。これではワイルドカード検索がサポートされないため、自分で解決する必要があります。少し変更が必要な正規表現を使用してみることができます。

string searchPattern = "some*string".Replace("*", ".*");
var searchRows = 
        rows.Where(tr => tr.ItemArray
            .Any(ti => Regex.IsMatch(ti.ToString(), searchPattern)))

それが役立つことを願っています。彼らが正規表現パターンを提供しようと決めた場合、彼らが探していたものが本当に台無しになるかもしれないので、入力には注意する必要があることに注意してください.

于 2012-07-30T21:15:36.357 に答える
1

このコードで試してください

   DataRow[] array = rows.ToArray();

   array.Contains(yourIndex, yourTextBox.Text); 

この拡張機能を追加

 public static bool Contains(this DataRow[] dataRows, string value, int index)
   {
     foreach(var row in dataRows)
     {
        if(row[index].ToString().Contains(value))
        {
             return true;
        }
     } 
     return false;
  } 
于 2012-07-30T16:51:53.903 に答える
1
Boolean found = false;
foreach(Datarow d in rows)
{
    foreach(object o in d.ItemArray)
    {
        if(o.ToString().Contains("test")
        {
            found=true;
            break;
        }
    }
}

このようなことを意味しますか?

于 2012-07-30T16:54:39.590 に答える