2012-01-27 29 views
2

下面是我的Linq查詢如何獲得的IndexOf()空格在LINQ查詢

var test = from k in db.CityTable 
      where k.Name.Substring(0,1)== test1 && k.Name.Substring(4,1) == test2 
      select k.CityName; 

在數據庫中的表

示例如下所示k.Name會有值:紐約或新澤西州 這裏test1和test2是字符串變量,其中包含單個字符,如N或Y或J. 現在我想比較k.Name的第一個字母與test1。

然後比較test2和k.Name中第二個單詞的第一個字母。

假設紐約是Database列中的值。

測試1 = N

測試2 = Y

k.Name =紐約

現在應該與第一字母與新和Y的第一字母比較ñ的約克。 爲了達到這個目標,我必須得到空間後的第一個字符。

這是我曾經嘗試過,

test = from k in db.CityTable 
where k.CityName.Substring(0,1)== test1 && k.CityName.Substring(k.CityName.IndexOf(' '),1) == test2            
select k.CityName; 

但此查詢我得到異常

基地{System.SystemException} = {「LINQ到實體不承認 方法'Int32 IndexOf(Char)'方法,並且此方法不能將 翻譯爲商店表達式。「}

我如何實現這一目標?

+0

你有沒有用'的IndexOf嘗試(」「)'?你也可以嘗試採取'CityTable'的數據在內存中的列表,然後嘗試在它這個查詢。 – Bastardo 2012-01-27 07:05:02

+1

@RoboLover我的test1和test2將只有數據庫中城市的縮寫。 是的,我已經嘗試IndexOf() – 2012-01-27 07:10:34

+1

你試着用'char'參數'IndexOf',我建議你用'string'參數調用它,請檢查我的答案爲msdn'IndexOf'示例。 – Bastardo 2012-01-27 07:13:12

回答

2

考慮嘗試IndexOf(" "),這也可能更好IndexOf(string.Empty),檢查String.IndexOf(substring)

where k.CityName.Substring(0,1)== test1 && k.CityName.Substring(k.CityName.IndexOf(" "),1) == test2