2015-12-14 2 views
-8

Как я могу найти в LINQ, как указано ниже? Я хочу ввести строку как «% b% c% d%» в своем текстовом поле и хочу получить результат по мере поступления в SQL.Предварительный поиск в LINQ

Select * 
from TableName 
Where ColumnName Like 'a%b%c%d%' 
+0

Linq-To-Sql или Linq-To-Entities. –

+0

Возможный дубликат [Как сделать SQL Like% в Linq?] (Http://stackoverflow.com/questions/835790/how-to-do-sql-like-in-linq) –

+0

@TimBourguignon: хотя воспринятый ответ не помогает. Но ответ на этот вопрос зависит от архитектуры, в Linq-To-Sql вы можете использовать 'SqlMethods.Like'. Я не знаю, как это работает в LInq-To-Entities. Я думаю, вам нужно [этот подход] (http://stackoverflow.com/a/3095963/284240). –

ответ

-1
from item in context.TableName 
where item.ColumnName.StartWith("a%") or item.ColumnName.StartWith("b%") or item.ColumnName.StartWith("c%") or item.ColumnName.StartWith("d%") 
select item; 
+0

Это не то же самое, что и у OP. Вы проверяете, начинается ли оно с a или b или c или d. OP хочет только строки, где столбец начинается с a, затем произвольный, затем b, затем произвольный, затем c, затем произвольный, затем d, затем произвольный. –

0

LINQ не имеет, как оператора, так что вы могли бы сначала проверить, если он содержит, б, в и г, а затем проверить, если находится в начале, а пред с, и с до того д. Например:

from item in context.TableName 
where item.ColumnName.StartsWith("a") && item.ColumnName.IndexOf("b") != -1 
&& item.ColumnName.IndexOf("c") != -1 && item.ColumnName.IndexOf("d") != -1 
&& (
    item.ColumnName.IndexOf("b") < item.ColumnName.IndexOf("c") 
    && item.ColumnName.IndexOf("c") < item.ColumnName.IndexOf("d") 
    ) 
select item; 
+0

Спасибо @Roberto. Как мы можем сделать это общим? –

Смежные вопросы