在我使用 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);
}
}
}
但是,我想概括一下,因为这种搜索发生在更多地方。此外,对于某些表,这应该发生在不止一列上。有任何想法吗?
我将 Visual Studio 2010 与 .NET Framework 4.0 一起使用。