DGVから行を選択するこのコードがあります。% "。検索"%C#
if (row.Cells[1].Value.ToString().Equals(searchValue))
{
row.Selected = true;
break;
}
それは一見正確なものだけでなく、入り口見つけますので、C#で使用するようにSQLから
%".$searchvalue."%
のようなものはありますか?
DGVから行を選択するこのコードがあります。% "。検索"%C#
if (row.Cells[1].Value.ToString().Equals(searchValue))
{
row.Selected = true;
break;
}
それは一見正確なものだけでなく、入り口見つけますので、C#で使用するようにSQLから
%".$searchvalue."%
のようなものはありますか?
利用string.Containsの代わりに、あなたは以下のようなStartsWith
を使用することができ、文字列の唯一entrances
を知りたい場合は
if (row.Cells[1].Value.ToString().Contains(searchValue))
{
row.Selected = true;
break;
}
ありがとうGilad !! – Vvisions
に等しくなります。あなたは、文字列の唯一endings
を知りたい場合は
if (row.Cells[1].Value.ToString().StartsWith(searchValue))
{
row.Selected = true;
break;
}
あなたは以下のようなEndsWith
を使用することができます。
if (row.Cells[1].Value.ToString().EndsWith(searchValue))
{
row.Selected = true;
break;
}
パフォーマンスについての心配はありません場合は、上記の例でcontains
を使用することができます。 一般的なケースに
StartsWithは最初の単語の最初のカッパーを探すか、それとも単語の最初の文字を探しますか? containsを使用するとパフォーマンスにどのような影響がありますか? – Vvisions
最初の単語の最初の文字だけを探します。 'Contains'は別のアルゴリズムを使い、' StartsWith'や 'EndsWith'よりも多くの組み合わせを計算する必要があります。したがって、必要な文字列のマッチャーがどこにあるのかわからない場合に使用されます。あなたが検索する必要があるものについて非常に確信している場合は、それが始まりまたは終わりに来ると、これらを使用することができます。それ以外の場合、 'Contains'は悪い選択ではありません。 – Venky
すべての単語の最初の文字を確認したい場合は、文字列を 'space'で分割し、それぞれの部分をループして、' matching string'で始まるかどうかを確認する必要があります。 – Venky
あなたは模倣 SQL LIKE
構築したい場合は、正規表現試すことができます:あなたのケースでは
public static bool Like(String value, String like) {
if (String.IsNullOrEmpty(like) || String.IsNullOrEmpty(value))
return false; // or throw exception
String pattern = "^" + Regex.Escape(like).Replace("%", ".*").Replace("_", ".") + "$";
return Regex.IsMatch(value, pattern);
}
....
String source = "abcdef";
// true
bool result = Like(source, "%b_d%");
を
if (Like(row.Cells[1].Value.ToString(), searchValue)) { ... }
[LinqでSQL Like Likeを実行する方法]の可能な複製?(http://stackoverflow.com/questions/835790/how-to-do-sql-like-in-linq) –