c# - 使用实体框架根据 Id 从另一个表中选择列
问题描述
我有以下课程:
public class Blog {
public int Id {get; set;}
public String Name {get; set;}
...
...
public int CatId {get;set;}
}
public class BlogCategory{
public int Id {get; set;}
public String Name {get; set;}
public virtual Blogs {get; set;}
}
现在我的剃须刀页面中有视图模型:
public BlogViewModel{
public int Id {get; set;}
public string Name {get; set;}
..
..
public string CategoryName {get; set;}
}
我正在尝试选择博客并包含它的类别名称:我的查询:
Blogs = await _context.Blogs
.Select(b => new BlogViewModel()
{
Id = b.Id,
Name = b.Name,
//CategoryName =
})
.ToListAsync();
如何根据我拥有的 CatId 从 BlogCategory 表中选择类别名称?
一种方法是添加
public virtual Category BlogCat {get; set;}
到 Blog 类,然后使用 Include 但我不想使用此方法,因为我只想要类别名称而不是完整对象。
请问有什么帮助吗?
解决方案:
Blogs = await _context.Blogs
.Select(b => new BlogViewModel()
{
Id = b.Id,
Name = b.Name,
CategoryName = _context.BlogCategory
.Where(c => c.Id == b.CatId)
.Select(c => c.Name)
.SingleOrDefault()
})
.ToListAsync();
解决方案
var blogModels = ( from b in _context.Blogs
join c in _context.BlogCategories
on b.CatId equals c.Id
select new BlogViewModel()
{
Id = b.Id,
Name = b.Name,
CategoryName = c.Name
}).ToList();
推荐阅读
- clickhouse - 如何创建 TOP N 最常见值的 Clickhouse 物化视图
- laravel - Laravel 5.1 DB::statement 与命名绑定返回“SQLSTATE [HY093]:无效参数号”
- ruby-on-rails - Rails ActiveAdmin link_to 内部不同的新模型 - ActiveRecord::AssociationTypeMismatch
- php - 根据自定义帖子类型的最低和最高价格过滤查询
- json - 如何将文件 JSON 从邮递员转换为 Java 模型类?
- angular - Angular 中的事件绑定?
- xcode - Xcode Interface Builder 是否支持插件?
- amazon-web-services - Redshift 转换为文本类型
- javascript - Firebase 函数 - 在子集合中创建文档时从主集合获取数据
- python - 当我的输入有效时,为什么删除“自我”会导致错误?