2013-01-07 91 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

相關問題