当在搜索字段中搜索单词时,我将通过键入“Coo”或“oOk”来查找单词,例如“cookies”。我需要什么LinQ语法来创建这个功能?
此外,功能应该考虑到不区分大小写,例如,通过输入单词“MpUT”可以找到名为“ComPuTER”的单词吗?
答案 0 :(得分:1)
您可以使用contains
:
var query = from t in tbl
where t.ToUpper().Contains(input.ToUpper())
select t;
我使用ToUpper来确保表和源是相同的大小写,以便“Coo”匹配“cookies”
在SQLMethods中也有一个Like方法,但我没有使用过这个......
var query = from t in tbl
where SqlMethods.Like(t, "%"+input+"%")
select t;
(点击此处查看:http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/10/16/linq-to-sql-like-operator.aspx)
答案 1 :(得分:0)
类似的东西:
var cookies = (from t in tbl where t.Contains("oOK") select t);
答案 2 :(得分:0)
这是使用你的价值观的一种方式。在LinqPad中尝试一下。虽然没有真正使用Linq的任何功能,但你会想要为非常大的来源观看它。
string[] words1 = {"cookies", "lasagna", "steak"};
string searchTerm1 = "Coo";
var matches1 = words1.Where (w => w.ToLowerInvariant().Contains(searchTerm1.ToLowerInvariant()));
Console.WriteLine(matches1.Count().ToString());
string searchTerm2 = "oOk";
var matches2 = words1.Where (w => w.ToLowerInvariant().Contains(searchTerm2.ToLowerInvariant()));
Console.WriteLine(matches2.Count().ToString());
List<string> words2 = new List<string>();
words2.AddRange(new string[] {"abacus", "ComPuTER", "coffee maker"});
string searchTerm3 = "MpUT";
var matches3 = words2.Where (w => w.ToLowerInvariant().Contains(searchTerm3.ToLowerInvariant()));
Console.WriteLine(matches3.Count().ToString());