2012-01-27 79 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