У меня два списка.
Список клиентов: один из них получает от пользователя (клиента)
Список серверов: один из них получает из базы данных.
Я хочу проделать 3 работы над этими списками.
Один: Добавить (если данные не существуют в Списке серверов и существуют в Списке клиентов)
Два: Удалить данные (если есть в список серверов и не существует в списке клиентов)
Три: Обновление (если данные существуют в списке серверов и клиентском сервере и данные изменились)
Это мой модель:
public class CategoryPropertyDto
{
public Guid? Id { get; set; }
public Guid CategoryId { get; set; }
public string PropName { get; set; }
public CategoryPropertyType CategoryPropertyType { get; set; }
}
клиент присылает мне список этой модели CategoryPropertyDto
.
Теперь я пишу этот код для добавления данных:
var currentValue = getAllPropByCategory.Result.Select(x => new CategoryPropertyDto
{
CategoryId = x.CategoryId,
CategoryPropertyType = x.CategoryPropertyType.CategoryPropertyType,
Id = x.Id,
PropName = x.PropName
}).ToList();
/// Add New Property
var newProp = request.CategoryPropertyDtos.Where(x => x.Id == null).ToList();
List<CategoryProperty> CategoryProperty = new List<CategoryProperty>();
if (newProp.Count() > 0)
{
foreach (var item in newProp)
{
CategoryProperty.Add(new CategoryProperty(item.PropName, item.CategoryPropertyType, item.CategoryId));
}
await unitOfWork.CategoryRepository.CategoryPropertyRepository.AddBulkCategoryProperty(CategoryProperty, cancellationToken);
}
, и он работал хорошо.
Теперь я хочу найти элементы для удаления (существуют в списке серверов, но не существуют в списке клиентов)
var removeValue = currentValue.Except(request.CategoryPropertyDtos).ToList();
, но это не сработало и вернуть все currentValue
и я не «Не знаю, как найти элементы для обновления.
Как решить эту проблему?