如何 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 写的!!
我想 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 写的!!