Как отфильтровать таблицу с помощью linq?

У меня есть таблица данных, как показано ниже

Металл ценить серебро 5 silver_ref Да золото 2 gold_ref Н железо Н железо_ref Н

Из этой таблицы данных я хочу фильтровать, как показано ниже. if silver,gold,iron != 'N' и silver_ref,gold_ref,iron_ref = 'Y'. Таким образом, таблица данных станет

Идентификатор ценить серебро 5

Как я могу достичь с помощью linq

Можете ли вы показать класс POCO для этой таблицы?

Prasad Telkikar 29.05.2024 08:26

Я получаю это как DataTable и хочу изменить формат второй таблицы данных.

Biswa 29.05.2024 12:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Структура ваших данных далека от идеала, но мы можем работать с тем, что у вас есть.

Один из способов получить желаемые результаты — это самостоятельно соединить таблицу с самой собой, сопоставив строки, отличные от "_ref", со строками "_ref". Затем предложение where может отфильтровать результаты, которые не соответствуют остальным требованиям.

Результат будет примерно таким:

var results =
    from d1 in data
    join d2 in data on (d1.Metal + "_ref") equals d2.Metal
    where d1.value != "N" && d2.value == "Y"
    select d1;

См. эту .NET Fiddle.

Вышеупомянутое не ограничивается металлами «золото», «серебро» и «железо».

не удалось найти реализацию шаблона запроса для типа источника. Соединение таблицы данных не найдено, возникает ошибка

Biswa 29.05.2024 10:46

Что ж, чтобы LINQ работал, источники данных должны быть IEnumerable<> или IQueryable<> определенного типа. Какой тип данных data в вашем коде? (Не связано: я обновил ответ выше, поменяв местами выражения в on ... equals ....)

T N 29.05.2024 18:13

Другие вопросы по теме

Как получить индекс повторяющихся элементов вместе с диапазоном пустых элементов после него. ЛИНК
Чтение вложенного XML из файла и использование классов для хранения информации
Чтение XML в формат LINQ для проверки данных файла журнала. Условия в формате списка. linq не получает преобразованный XML
Могу ли я настроить автоматическое выполнение асинхронной операции после завершения другой асинхронной операции?
Как решить исключение «Неожиданный источник запроса: присоединиться к ICacheEntry в CacheQueryable» при выполнении левого соединения с использованием linq в Apache Ignite?
Как выбрать и сгруппировать поля с помощью LINQ?
Найти следующее значение в списке объектов
C# Linq «Все в условии»
Используйте LINQ для преобразования плоского списка X, Y в IEnumerable<Point>
Как распечатать значения Linq, добавленные в список, вместо «System.Collections.Generic.List`1[System.Int32]» в C#?