Linq. быстрая проверка элемента на то имеет ли он в определенном бите единицу - C#

Узнай цену своей работы

Формулировка задачи:

Тяжело сформулировать кратко. Есть запрос к датасету: IEnumerable<int> docnumber = (from s in dataset.proc where containinnumber(s.ItemArray.ElementAt(27), current_rights) select Convert.ToInt32(s.ItemArray.ElementAt(0))).ToArray().OrderByDescending(s => s); функция containinnumber выглядит следующим образом private bool containinnumber(object number, int rights) { try { if (Convert.ToString(Convert.ToInt32(number), 2).ElementAt(rights - 1) == '1') return true; else return false; } catch { return false; } } Что я делаю? пытаюсь достать коллекцию номеров, для которых в ElementAt(27) (является object-ом, в бд int) в бите под номером current_rights стоит 1. То есть есть строка в которой в 27 позиции число 5, то его я представляю в двоичной форме 101, и смотрю есть ли на позиции current_rights(например 2) единица. Работает достаточно долго для 5000 записей. есть идеи как ускорить проверку?

Решение задачи: «Linq. быстрая проверка элемента на то имеет ли он в определенном бите единицу»

textual
Листинг программы
if (((int)number & (1 << rights)) != 0)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.2 из 5
Похожие ответы