繁体   English   中英

按ID列表获取实体并检查它们是否存在

[英]Get entity by list of id and check if they exist

想象一下,我有以下课程:

// 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迭代它,但我正在寻找一种奇特的方式。

你可以使用Except

产生两个序列的集合差异。

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)); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM