Получить сущность по списку идентификаторов и проверить, существуют ли они - PullRequest
0 голосов
/ 22 апреля 2019

Представьте, что у меня есть такие классы, как:

// DTO
public class RequestrDto
{
    public string Name { get; set; }
    public ICollection<int> CityIds { get; set; }
}

// ENTITY
// PLACE
public class Place
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<City> Cities { get; set; }
}

// CITY
public class City
{
    public int Id { get; set; }
    public int? PlaceId { get; set; }
    public string Name { get; set; }
    public string Code { get; set; }
    public List<City> Cities { get; set; }

    public Place Place { get; set; }
}

Я хотел бы проверить, существуют ли города в базе данных, и добавить их во вновь созданный класс объектов, который будет добавлен в базу данных.

Итак, я могу сделать как:

var placeEntity = new Place() 
{
    Name = RequestrDto.Name;
}
var cities = _context.Cities.Where(x => request.CityIds.Contains(x.Id)).ToList();
placeEntity.Cities.AddRange(cities);

Как я могу получить города и проверить, есть ли они в БД? Я знаю, что могу перебрать его через foreach, но я ищу причудливый способ.

1 Ответ

0 голосов
/ 22 апреля 2019

Вы можете использовать За исключением

Создает разницу между двумя последовательностями.

var cities = _context.Cities.Where(x => request.CityIds.Contains(x.Id))
                            .ToList();

var ids = cities.Select(x => x.Id); 
var missing = request.CityIds.Except(ids);

// or

var missing = request.CityIds.Except(cities.Select(x => x.Id)); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...