2013-01-07 97 views
2

我有一个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(); 

感谢,

回答

4

你想是这样的:

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

是的,但显示的错误是这样的:LINQ到实体无法识别方法“System.String [] Split(Char [])'方法,并且此方法不能转换为商店表达式。 – Dheyv

+0

尝试使用'line.Value.ToString().Split('').Any(x => x.StartsWith(V​​al))'(抱歉 - 如果没有前面的代码,这很难调试)。如果失败,请参阅http://stackoverflow.com/questions/8653200/split-string-with-linq –

+0

P.S.你可以随时调试你的Fluent API chans,就像'var part1 = line.Value.Split('');'然后'var part2 = part1.Any(x => x.StartsWith(V​​al));''并使用具有断点的'F10'来在它们之间进行切换。 –

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(); 
+0

查询返回错误,无法创建常量值类型'System.Object'。在此上下文中仅支持基本类型(如Int32,String和Guid)。 – Dheyv

相关问题