@beduin01

Как лучше реализовать данный цикл в С#?

Ситуация очень простая.

У меня есть структура UserData. Там поля id, guid, name и тд. Мне нужно найти уникальный guid, которые есть в первой БД, но нет во второй.

Собственно в строке:
if (GUIDListInTransitDB.Contains(el))
Мне нужно проверить есть ли определенный гуиды в переборке. Только как это сделать?
Я же не могу написать:
if (GUIDListInTransitDB.Contains(el.guid))
во всяком случае студия ругается, что в общем то и логично.
Как быть то? Есть ли решение лучше и как это решение использовать?

List<string> GUIDListExistsInTransitButNotInTargetDB; // ГУИДы которые есть в транзите, но нет в Target, с ними мы потом и будем работать
               List<UserData> GUIDListInTransitDB = TransitDbContext.GetGUIDList(11);
               List<UserData> GUIDListInTargetDB = TargetDbContext.GetGUIDList(11);

               foreach (var el in GUIDListInTargetDB)
            {
                if (GUIDListInTransitDB.Contains(el)) 
                    continue;
                else
                {
                  //  GUIDListExistsInTransitButNotInTargetDB.Add(el.Guid);
                }
            }
  • Вопрос задан
  • 186 просмотров
Решения вопроса 2
wkololo_4ever
@wkololo_4ever
if (GUIDListInTransitDB.Select(g=>g.ВАШЕ_ГУИД_СВОЙСТВО).Contains(el))
Ответ написан
EreminD
@EreminD
Кое-что умею
А не подскажите где у меня в цикле может быть ошибка. Почему все выводится по 3 раза?

надо проверить, какие данные входят в GUIDListTransitInDB

и if можно вот так оптимизировать
if (!GUIDListTransitInDB.Select(g => g.guid).Contains(el.Guid))
{
    GUIDListTransitButNoInTargetDB.Add(el.GUID);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Мне нужно найти уникальный guid, которые есть в первой БД, но нет во второй.

Почему бы это не сделать на стороне БД? Элементарным джойном же проблему решить можно.

Энивей, если вам нужны операции с множествами, зачем использовать динамические массивы (List) ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы