НРАВИТСЯ в Linq to SQL

У меня есть метод, который должен принимать массив названий стран и возвращать список записей, соответствующих одному из этих названий стран. я пытаюсь это

Public Shared Function GetConcessions(ByVal Countries As String()) As IEnumerable
    Dim CountryList As String = Utility.JoinArray(Countries) ' turns string array into comma-separated string
    Return (From t In New Db().Concessions _
                    Where CountryList Like t.Country _
                    Select t.ConcessionID, t.Title, t.Country)
End Function

но я получаю эту ошибку

  *Only arguments that can be evaluated on the client are supported for the LIKE method

В простом SQL это было бы просто:

 Select ConcessionID,Title from Concessions c where @CountryList like '%' + c.Country + '%'

Как я могу добиться этого результата в Linq to SQL?

Изменить (уточнение)

Я получаю то же сообщение с string.Contains. Было бы хорошо с

t.Country.contains(CountryList)

но мне нужно

CountryList.contains(t.Country) 

и это выдает ту же ошибку, которую я указал выше.


person Herb Caudill    schedule 10.10.2008    source источник
comment
Я понял, прочитав более внимательно, что мой ответ был бесполезен :)   -  person leppie    schedule 10.10.2008
comment
Принятый ответ не лучший   -  person Brian Webster    schedule 02.02.2013


Ответы (2)


Я думаю, что вы хотите создать список из стран и использовать

List<string> ListOfCountries = new List(Countries)

...ListOfCountries.Contains(t.Country)

Это переводится в

t.Country IN ('yyy','zzz',...)

Пожалуйста, извините мою С#-ишность ..

person tvanfosson    schedule 10.10.2008

Вы можете использовать SqlMethods.Like

e.g.

Where SqlMethods.Like(t.country, "%Sweden%")
person sepang    schedule 10.10.2008
comment
очень приятно, когда вам нужно поместить поле базы данных с правой стороны :) - person ctrlShiftBryan; 27.09.2010