我有列表,我需要搜索类似的项目:
如果用户搜索smi,它会带来所有包含smi的项目?
有什么想法吗?
答案 0 :(得分:6)
这将找到以'smi'(mySearchString)
开头的所有结果foreach(var result in myList.Where(s => s.IndexOf(mySearchString) == 0))
{
// Do whatever
}
这将找到任何包含'smi'(mySearchString)
的内容foreach(var result in myList.Where(s => s.IndexOf(mySearchString,StringComparison.InvariantCultureIgnoreCase) != -1))
{
// Do whatever
}
这将搜索您的文本(忽略大小写),并返回包含该文本的任何字符串。
应该有效 - 不要靠近IDE,但希望有所帮助
答案 1 :(得分:5)
检查以下示例
string serachKeyword ="o";
List<string> states = new List<string>();
states.Add("Frederick");
states.Add("Germantown");
states.Add("Arlington");
states.Add("Burbank");
states.Add("Newton");
states.Add("Watertown");
states.Add("Pasadena");
states.Add("Maryland");
states.Add("Virginia");
states.Add("California");
states.Add("Nevada");
states.Add("Ohio");
List<string> searchResults = states.FindAll(s => s.Contains(serachKeyword));
答案 2 :(得分:1)
搜索包含'smi'的项目
var result = list.Where(s => s.Contains("smi"));
答案 3 :(得分:1)
如果你想在任何地方抓住所有包含“smi”的项目,比如“smith”和“vesmit”:
var list = myList.Where(m => m.Contains("smi"));
如果你想抓住字符串开头的所有包含“smi”的项目,比如“smith”,“smitten”和“smile”:
var list = myList.Where(m => m.BeginsWith("smi"));
如果您想要更多灵活性,可以使用正则表达式
var list = myList.Where(m => Regex.IsMatch(m, "regexPattern"));
答案 4 :(得分:0)
如果你使用没有LINQ的C#版本,你可以使用Find
的{{1}}方法,如here所述(它在该页面上也有很大的样本)。