为了账号安全,请及时绑定邮箱和手机立即绑定

通过 id 列表获取实体并检查它们是否存在

通过 id 列表获取实体并检查它们是否存在

C#
慕妹3146593 2022-12-24 10:29:55
想象一下我有这样的课程:// DTOpublic class RequestrDto{    public string Name { get; set; }    public ICollection<int> CityIds { get; set; }}// ENTITY// PLACEpublic class Place{    public int Id { get; set; }    public string Name { get; set; }    public List<City> Cities { get; set; }}// CITYpublic 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 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

您可以使用

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


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


查看完整回答
反对 回复 2022-12-24
  • 1 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信