Как найти запись с нечетным идентификатором в базе данных по лямбда-выражению?

#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 и поэтому ЧЕТНЫЙ.