Как мне написать запрос linq to sql, чтобы найти записи, в которых имя поля может совпадать с динамическим числом строк? - PullRequest
0 голосов
/ 22 марта 2012

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

В основном

Dim myRecs = (From l As EpiData In myDataContext.EPIDatas Where l.facility= _ 
              one of the checked labs

Так что, в основном, мне нужно написать запрос linq, где «строки» для сопоставления определяются во время выполнения. Есть ли способ сделать это легко? Я знаю, что есть библиотека с именем динамического LINQ, но (1) она на C #, и я пишу на VB (2) Я просто ищу единственное простое решение для этого отдельного случая.

Есть предложения?

1 Ответ

3 голосов
/ 22 марта 2012

Использование. Содержит

Dim myRecs = (From l As EpiData In myDataContext.EPIDatas 
              Where listOfCheckedLabs.Contains(l.facility))

В качестве примечания вы можете безопасно использовать библиотеку C # из VB.Net и наоборот. Могут возникнуть проблемы, когда библиотека не «совместима с CLS». Это было бы так, если бы библиотека C #, например, имела открытые члены, которые возвращали unsigned int, что, если мне не изменяет память, не поддерживается VB.NET. Обычно это не так, поскольку авторы библиотеки должны стремиться к CLS-совместимому коду.

Я протестировал использование Linq для SQL и Linq для сущностей, просто чтобы убедиться, что это работает - что он делает.

Используя C #, у меня есть такой код, который отлично работает (используя LINQPad):

var list = new List<string>{ "Test", "Test 2" };
var query = Models.Where (m => list.Contains(m.Description));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...