Linq to SQL を使用した私のアプリケーションでは、ユーザーはテキストを検索できます。検索式の先頭または末尾にアスタリスク (*) を使用できます。コードは次のとおりです。
var search = SearchTextBox.Text.Trim();
bool filterStartsWith = false, filterEndsWith = false;
if (!string.IsNullOrEmpty(search))
{
filterStartsWith = search.EndsWith("*");
filterEndsWith = search.StartsWith("*");
if (filterStartsWith) search = search.Substring(0, search.Length - 1);
if (filterEndsWith) search = search.Substring(1);
if (filterStartsWith)
{
if (filterEndsWith)
{
query = query.Where(item => item.Omschrijving.Contains(search));
}
else
{
query = query.Where(item => item.Omschrijving.StartsWith(search));
}
}
else
{
if (filterEndsWith)
{
query = query.Where(item => item.Omschrijving.EndsWith(search));
}
else
{
query = query.Where(item => item.Omschrijving == search);
}
}
}
ただし、この種の検索はより多くの場所で行われるため、これを一般化したいと思います。また、一部のテーブルでは、これは複数の列で発生するはずです。何か案は?
.NET Framework 4.0 で Visual Studio 2010 を使用しています。