哪个LinQ语法?

时间:2011-01-05 20:28:44

标签: linq linq-to-sql

当在搜索字段中搜索单词时,我将通过键入“Coo”或“oOk”来查找单词,例如“cookies”。我需要什么LinQ语法来创建这个功能?

此外,功能应该考虑到不区分大小写,例如,通过输入单词“MpUT”可以找到名为“ComPuTER”的单词吗?

3 个答案:

答案 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());