NHibernate Linq где предложение: значение в коллекции - PullRequest
2 голосов
/ 18 апреля 2011

Мне интересно, я могу сделать предложение where, которое принимает коллекцию?

List<string> myStrings = new List<strings> {"1", "2"};

session.Query<Table>().Where(x => x.Id == myStrings).ToList();

Я в основном хочу получить все строки из моей таблицы БД, которые соответствуют всем в этом запросе.

session.Query<Table>().Where(x => x.Id == myStrings[0]).ToList();
session.Query<Table>().Where(x => x.Id == myStrings[1]).ToList();
session.Query<Table>().Where(x => x.Id == myStrings[N]).ToList();

Так вот, что я должен был бы сделать прямо сейчас. Я бы, вероятно, через это в цикле for, но это много запросов, и я бы просто сделать один запрос.

Или я должен использовать синтаксис запроса создания nhibernate

var query = "Select * From Where In (:Id)";
session.CreateQuery(query)SetParameter("Id",myStrings) // not sure if I have to something like .ExecuteUpdate(); but just for select instead

Ответы [ 3 ]

4 голосов
/ 19 апреля 2011
session.Query<Table>().Where(x => myStrings.Contains(s => x.Id));
1 голос
/ 18 апреля 2011
session.Query<Table>().Where(x => myString.All(s => x.Id == s));
0 голосов
/ 18 апреля 2011

вы должны использовать любой или все методы расширения в вашей коллекции

...