Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175

Вывод данных без повтора, после сравнения

01.05.2021, 14:16. Показов 4873. Ответов 24

Студворк — интернет-сервис помощи студентам
Всем привет я сравниваю данные list1 с list2 и потом их сравниваю с Data2 если в Data2 не равно с первыми двумя списками, то пишу в вывод. Всё работает за исключением что получаю результат:
1
2
3
4
5
4
5
4
5
1 2 3 это результат сравнения list1 и list2, а 4 5 должны вывестись один, но проблема в том что на не равенство я использую ещё один цикл и поэтому столько повторов кода. PS в Data2 может быть разное кол-во данных.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.Xml;
using System.Linq;
using System.Text;
using System.Collections.Generic;
                    
public class Program
{
    public static void Main()
    {
        List<string> list1 = new List<string> { "1", "2", "3" };
        List<string> list2 = new List<string> { "2", "3", "1" };    
        List<string> Data = list1.Where(l => list2.ToList().Contains(l)).ToList();
        ///
        List<string> Data2 = new List<string> { "4", "5" };
        var str = new StringBuilder();
        for(int i = 0; i < Data.Count(); i++)
        {
            Console.WriteLine(Data[i]);
        foreach(var result in Data2)
        {
            if(Data[i]!=result)
            {
            str.AppendLine(result);
            }
        }   
        }   
        Console.WriteLine(str.ToString());
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.05.2021, 14:16
Ответы с готовыми решениями:

Вывод изображений из массива без повтора
есть массив&lt;? //массив $randomHTML = array( '&lt;a id=&quot;example6&quot; href=&quot;https://www.cyberforum.ru/images/photo/1.jpg&quot;...

Вывод значений из массива без повтора
Помогите, пожалуйста, нужно сделать вывод элементов массива в 4-х блоках, но чтобы эти элементы не повторялись, то есть, чтобы каждый...

Вывод случайных чисел без повтора
Нужно написать программу, чтобы числа появлялись случайным образом и не повторялись, в интервале от 1 до 36. и выводились 5 цифр.

24
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
04.05.2021, 14:07
Лучший ответ Сообщение было отмечено xellan24rus как решение

Решение

Студворк — интернет-сервис помощи студентам
xellan24rus, Если SQL-Database не нужна, то и не надо.
Напишите класс таблицы и класс контекста с методами "аля БД") для "виртуальной" БД, в котором создавайте и удаляйте строки таблицы (таблиц) как нужно, но сам алгоритм обработки входящей информации будет думать, что работает с базой

Добавлено через 7 минут
Однако, при таком решении могут возникнуть два неприятных обстоятельства:

1. После закрытия приложения все данные будут утеряны.
Если этого нельзя допустить, их надо как-то и где-то сохранять (не обязательно в СУБД), а при загрузке приложения поднимать оттуда.

2. При большом объеме данных будет чрезмерный расход памяти и тормоза.
Лечится динамической очисткой "виртуальной БД" от лишних данных отдельной функцией, запускаемой через интервалы времени опять-так в фоне (Thread)
1
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
04.05.2021, 15:00  [ТС]
MsGuns, то что данные будут утеряны я понимаю, да и при новом запуске например, будут абсолютно новые данные =) Про чистку бд верно сказали, зачем нам куча хлама в котором разбираться лишний раз не охото =) А теперь про логику я имею DataGridView в нем данные изменяются каждую секунду, стабильно только ячейка с именем строки, опять таки имя рандомное. Какой подход лучше подойдет для обновления DataGridView ? Например я заполняю его с одной таблицей, мне лучше сделать как вы говорили? То есть сделать например 2 datatable? Но тогда мне нужно будет их сравнивать в последовательности и выводить результат в третью datatable и потом его уже записывать.. А если данные иметь datable с входными данными, то мне нужно будет с DataGridView заносить данные для сравнения в другую datable, получится одна бд с входными данными, другая бд с данными с DataGridView и 3 бд результат сравнения последовательности и ее уже заношу в DataGridView . Я не знаю понятно или нет описал, но вроде понять можно? Как лучше сделать?

Добавлено через 38 минут
Работа с бд это круто =) Сейчас тестовый проект сделал, то с чем я возился сравнивать и т.п не нужно, достаточно иметь вмененную таблицу в данном случае это Datagridview и далее можно делать так
C#
1
2
dataGridView1.DataSource = booksTable;
dataGridView1.Update();
и таблица не перезаписывается целиком, а динамически обновляется и даже сравнивать ничего не нужно =)
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
04.05.2021, 15:22
xellan24rus,
Не лазьте в гриды вообще, у Вас есть "виртуальная БД", просто периодически перечитывайте из нее данные в свой грид и все !
Как часто перечитывать ? Как нужно, например, по таймеру или после того, как в "базу" будет добавлено 10(20,50,100 - можно устанавливать порог через интерфейс) новых записей - Вам виднее.
Главное, чтобы интерфейс был:
1) Нагляден
2) Шустр (не тормозил)
3) Избыточен и достаточен (отражал все необходимое, но не загроможден)
4) Мобилен (своевременно реагировал на ход процессов)

Добавлено через 6 минут
Цитата Сообщение от xellan24rus Посмотреть сообщение
достаточно иметь вмененную таблицу в данном случае это Datagridview
Грид - это не таблица ! Поймите же Вы наконец ! В него можно засунуть все, что угодно, используя его строки и ячейки, при этом никаких таблиц не будет от слова совсем. Table,Adapter - всего-навсего невизуальные классы для хранения данных, отображаемых гридом в его строках и ячейках, а также для двухстороннего обмена данными с источником (например, таблицей БД) для адаптера.

Делал гриды, которые показывали только картинки, никак не связанные ни с БД (брались из папок), ни вообще ни с какой таблицей.
1
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
04.05.2021, 15:26  [ТС]
MsGuns, понял) с вами согласен полностью =) мне нужно перечитывать каждые 30сек например так как во всех строках данные меняются =) Входные данные это около 1к, а обработанные данные для записи в грид их около 100 и перечитывать не сильная проблема так как этих данных для записи не так много) Спасибо за наставления) Так бы дальше возился со строками и материл их

Добавлено через 35 секунд
Цитата Сообщение от MsGuns Посмотреть сообщение
Грид - это не таблица ! Поймите же Вы наконец ! В него можно засунуть все, что угодно, используя его строки и ячейки, при этом никаких таблиц не будет от слова совсем. Table,Adapter - всего-навсего невизуальные классы для хранения данных, отображаемых гридом в его строках и ячейках, а также для двухстороннего обмена данными с источником (например, таблицей БД) для адаптера.
Делал гриды, которые показывали только картинки, никак не связанные ни с БД (брались из папок), ни вообще ни с какой таблицей.
Я имел ввиду таблицу привязанную к ней =)

Добавлено через 2 минуты
Цитата Сообщение от MsGuns Посмотреть сообщение
Делал гриды, которые показывали только картинки, никак не связанные ни с БД (брались из папок), ни вообще ни с какой таблицей.
Если можно, то можете проектом поделиться с таблицами, типа dataset\datatable? По изучаю подходы к этому =)
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
04.05.2021, 15:33
Цитата Сообщение от xellan24rus Посмотреть сообщение
Если можно, то можете проектом поделиться с таблицами, типа dataset\datatable?
Увы, это сложно С WinForms не работаю давно, в шарпе работал где-то с год, основной опыт у меня из Delphi - вот с ним я трудился с 2002 по 2012 год
Все проекты, конечно, остались в архивах, в т.ч. и студийные, но лезть в них не хочется, тем более, что далеко не все они есть на моем HDD - большинство пылятся где-то в шкафу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.05.2021, 15:33

Добавление данных в таблицу без повтора
Как реализовать запрос, который будет добавлять данные в таблицу без повторений? У меня есть таблица тегов, в которую добавляются новые...

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

Вывод полей класса после сравнения
Проблема: (Нужно отыскать нужный фильм и вывести данные об нем.) Если еще конкретнее, то почему после успешного сравнения некорректно...

Как в access сделать запрос без повторений(чтобы требуемые поля выводились без повтора)???
есть 3 табл. R1 = (ФИО, Дисциплина, Оценка); R2 = (ФИО, Группа); R3 = (Группы, Дисциплина) добавила в R2 столбец где должны пройти экз. и...

Вывод надписи ошибки, после сравнения двух числовых значений
Необходимо вывести сообщения об ошибке после выполнения условий n+m&gt;x , если при сложении n и m будет число больше икса, то выполнение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru