首页 > 解决方案 > 如何从两个表中获取数据并将其保存在 Net Core Entity Framework 中的 DTO 中?

问题描述

我只是在示例中解释这一点,假设我有两个表,字段和模块字段

field
id     name          ismodule
1      Firstname     1
2      Lastname      0

modulefield
id     moduleid      fieldid
1      22            1

这是我的数据库的简单表示。现在在 EF 中,我怎样才能得到这些列的一行

modulefield.moduleid     field.id     field.name
22                       1            Firstname

基本上,如果 field.ismodule 为真,我只想获取 modulefield.moduleid。

我认为的等效 sql 脚本是

SELECT b.submoduleid, a.* FROM field a, modulefield b;

我当前的代码是这个(片段)

   var result = new List<FieldDTO>();
   var fields = await _repo.GetAsync<Field>();
   result = _mapper.Map<List<FieldDTO>>(fields);

标签: c#entity-frameworkasp.net-core

解决方案


您可以使用linq join直接返回 a List<FieldDTO>

var result = (from e in _context.Fields
                     join mf in _context.ModuleFields on e.Id equals mf.FieldId
                     where e.IsModule == 1

                     select new FieldDTO
                     {
                         ModulefieldModuleid = mf.ModuleId,
                         FieldId = e.Id,
                         FieldName=e.Name


                     }).ToList();

推荐阅读