将字符串列表中单词的第一个字符与Linq匹配

时间:2013-01-07 12:44:02

标签: asp.net-mvc-3 linq

我有一个LINQ查询。我只是Linq的初学者。我想用它来自动完成。我需要将输入与字符串中单词的起始字符进行匹配。考虑一下情景。

字符串列表

1. London Corporation
2. Financial Services Industry
3. European Union Countries.
4. Derivative Securities

在上面的列表中,当用户按下字符“C”时,查询应该在字符串中将值1和3作为匹配字符“C”返回。如果输入为'S',则结果应为2和4。

我试过下面的一个。但不知道我怎么能继续下去。请有人告诉我如何在字符串中拆分单词并匹配输入字符。我尝试了下面的代码。

CODE

    var model = (from line in db.BibContents
                where line.TagNo == "020" && line.Sfld == "a" && line.Value.Split(' ').StartsWith(Val)
                    select new PoDetails
                    { 
                        BibId = line.BibId
                    }).ToList();

谢谢,

2 个答案:

答案 0 :(得分:4)

你想要这样的东西:

line.Value.Split(' ').Any(x => x.StartsWith(Val))

答案 1 :(得分:1)

您得到的错误是因为没有将c#Split()方法转换为SQL语法。

在您的情况下,您只需检查该行是以<Val>开头还是包含' ' + <Val>

var model = (from line in db.BibContents
             where line.TagNo == "020" && line.Sfld == "a" &&
             (line.IndexOf(Val) == 0 || line.IndexOf(' ' + Val) != -1)
                select new PoDetails
                { 
                    BibId = line.BibId
                }).ToList();