#c# #lambda
#c# #лямбда
Вопрос:
Я хочу знать, есть ли какой-нибудь способ найти запись с нечетным идентификатором в базе данных с помощью lambda expression
c #?
Я пробую, но это не работает!!
GoogleEntities db = new GoogleEntities();
List<tbl_search> _oddSearchList = db.tbl_search.Where(c => (c.id / 2) == 0).tolist();
Как это можно сделать?
Комментарии:
1. используйте % 2 вместо / 2, также == 1, если вам нужно нечетное, а не четное
2. Спасибо @Atomosk за ваш быстрый и верный ответ
Ответ №1:
Я думаю, вам это нужно
c => (c.id % 2) == 0 // modulus operator instead of divide operator.
Но опять же, это вернет четное значение, потому что идентификатор, полностью разделенный на 2, является четным. Вам это нужно
c => (c.id % 2) != 0
Чтобы получить нечетное число.
Итак, после этого ваш код будет таким
List<tbl_search> _oddSearchList = db.tbl_search.Where(
c => (c.id % 2) != 0
).tolist();
Комментарии:
1. Лично я бы хотел просто дважды проверить перевод этого SQL, чтобы убедиться, что модуль выполняется на уровне БД и не переносит все в память! Но тогда я параноик 😉
Ответ №2:
Используйте оператор module %
, который проверяет наличие остальной части подразделения.
List<tbl_search> _oddSearchList = db.tbl_search.Where(c => (c.id % 2) == 1).tolist();
Также проверьте, равен ли результат 1 вместо 0. Если остаток равен 0, то идентификатор делится на 2 и поэтому ЧЕТНЫЙ.