Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Herb CaudillОтветов: 2

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

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)

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

  • Я понял, прочитав более внимательно, что мой ответ был бесполезен :) leppie 10.10.2008
  • Принятый ответ не лучший Brian Webster 02.02.2013

linq-to-sql

Ответы

Ответ 1 · рейтинг 2 · tvanfosson

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

List<string> ListOfCountries = new List(Countries)

...ListOfCountries.Contains(t.Country)

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

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

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

Ответ 2 · рейтинг 9 · sepang

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

e.g.

Where SqlMethods.Like(t.country, "%Sweden%")

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы