Nano Hash - криптовалюты, майнинг, программирование

Использовать где в коллекции строк в Entity Framework

У меня есть следующие классы:

  1. Новости
  2. PostPermission
  3. Роль

у каждой новости есть ListOfPostPermissions (1-много), а у каждого PostPermission одна роль (1-1).

У меня есть список RoleId, и я хочу получить все News, где RoleId PostPermission находится в списке RoleId.

Я использую приведенный ниже код, но он вызывает ошибку:

var roles = _currentUserService.GetCurrentUserRoles(); // List<Guid>
return NewsList.Where(row => row.Permissions.Where(role=>roles.Contains( role.RoleId)).ToList()).ToList();

Я получаю эти ошибки:

Невозможно неявно преобразовать тип System.Collections.Generic.List в bool

Невозможно преобразовать лямбда-выражение в тип делегата System.Func, поскольку некоторые из возвращаемых типов в блоке не могут быть неявно преобразованы в тип возвращаемого делегата

как мне это сделать ?


  • Что за сообщение об ошибке? 21.12.2015

Ответы:


1

Вам нужно использовать Any внутри вместо Where, как это

return NewsList
    .Where(row => row.Permissions.Any(role=>roles.Contains(role.RoleId)))
    .ToList();

Это потому, что внешний Where ожидает предиката, то есть выражения, возвращающего bool. На это ясно указывает первое сообщение об исключении.

21.12.2015
  • ваш код возвращает эту ошибку: 'bool' does not contain a definition for 'ToList' and no extension method 'ToList' accepting a first argument of type 'bool' could be found (are you missing a using directive or an assembly reference?) 21.12.2015
  • Я удалил First ToList вот так return NewsList.Where(row =>row.Permissions.Any(role=>roles.Contains(role.RoleId))).ToList();, и теперь на нем нет ошибки, верно? 21.12.2015
  • @PsarTak Извините, я не посмотрел внимательно на весь запрос, так как замена Where на Any была важной частью. Подправил ответ. 21.12.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..