如何 select * 和计算 Entity Framework 中的字段?

How to select * and calculate field in Entity Framework?

我想 select 所有图片并计算 IsAnnotated 字段,但是如何才能 select * 字段并应用此 IsAnnotated 字段? 因为在这个例子中现在只有 selected IsAnnotated。我们是否有可能防止手动编写类似 Id = picture.Id, title = picture.Title?

的内容
var picture = await _dbContext.Pictures
                .Select(picture => new Picture
                {
                    IsAnnotated = _dbContext.Annotations.Any(x => x.PictureId == picture.Id),
                })
                .Where(s => ids.Contains(s.Id))
                .ToListAsync();

首先,select你想要的图片id列表:

 var pictures = _dbContext.Pictures
            .Where(s => ids.Contains(s.Id));

其次,使用 foreach 计算 IsAnnotated 字段 - 这不是 'select' 的情况,这是更新情况。 (转换为'List'为使用ForEach linq函数,可以改用foreach语句):

pictures.ToList().ForEach(a => a.IsAnnotated = _dbContext.Annotations.Any(x => x.PictureId == a.Id));

你可以这样做。

    Var pictures = _dbcontext.Pictures.Where(x=> IDs.Contains(x.id));

var annotations = await pictures.Join(_dbContext.annotation, pic => pic.id, ann => ann.pictureId, (pic, ann) => new 
    {
       Annotation = ann.IsAnnotated
    }.ToListAsync();

或者您可以根据需要传递模型来代替匿名类型。

抱歉,如果它不可读,但我是用 phone 写的!!