2009-10-22 2 views
1

Мы используем LINQ to EF для разработки решения.Сложное сопоставление строк с LINQ to Entity Framework

В моем запросе LINQ Я хотел бы

string toMatch = "Matt Cool"; 

newString = toMatch.Replace(" ", "% ") + "%"; 

// So here newString is 'Matt% Cool%' 

/*Now in my datasource, there is no 'Matt Cool', there's 'Matthew Coolguy'. 
I would like this query to return that result. 
I would expect this behavior with the 
wildcard. It doesn't work*/ 

var results = from a in mycontainer.users 
       where a.fullname.equals(newString) 
       select a.fullname; 

Я попытался «*» в качестве шаблона и решения регулярных выражений, но безрезультатно - Есть ли другие варианты?

+0

Я думаю, что вы можете заменить первую часть своего кода на newStr ing = toMatch.Replace ("", "%") + "%"; – eWolf

+0

Да, вы правы, я думал, что по какой-то причине я был явно более очевидным ... :-) – Matt

ответ

6

вместо использования Равно попробуйте использовать Содержит это должно принять ваши дикие карты, потому что внутренне LINQ использует LIKE при использовании Содержит

var results = from a in mycontainer.users 
       where a.fullname.Contains(newString) 
       select a.fullname; 
-1

Там отличная статья, которая описывает, как это сделать it: Regex in entity framework

+1

Ссылка не работает. –

+0

Похоже, есть копия разбитой статьи на [этой странице] (http://advanceddotnettechnologies.blogspot.com/2011/02/tutorial-databinding-from-entity.html). – tloflin