C# EF Core LINQ从包含的实体中排除列

C# EF Core LINQ从包含的实体中排除列,c#,entity-framework,linq,asp.net-core,ef-core-2.0,C#,Entity Framework,Linq,Asp.net Core,Ef Core 2.0,我正在使用ASP.Net Core 2.0和实体框架,并试图将一个模型返回到包含Employment实体的页面,其中还包括EmploymentDocument实体的集合。对于后者,我不希望加载数据(byte[])列,但我希望加载所有其他列,最重要的是FileName 我使用的linq查询加载包括数据列在内的所有内容: var employment = await _context.Employment .Include(e => e.EmploymentDocuments) //

我正在使用ASP.Net Core 2.0和实体框架,并试图将一个模型返回到包含Employment实体的页面,其中还包括EmploymentDocument实体的集合。对于后者,我不希望加载数据(byte[])列,但我希望加载所有其他列,最重要的是FileName

我使用的linq查询加载包括数据列在内的所有内容:

var employment = await _context.Employment
    .Include(e => e.EmploymentDocuments) // will load all associated document data
    .SingleOrDefaultAsync(m => m.EmploymentID == id);

此处的目的是能够在页面上显示所有文档名称的列表,并带有链接,这些链接可用于下载所选文件的数据。

手动选择所需的所有数据,并将其存储在某些Dto对象中:

var employment = await _context.Employment
    .Where(m => m.EmploymentID == id)
    .Select(e => new EmploymentDto
    { 
        ID = e.EmploymentID,
        Docs = e.EmploymentDocuments.Select(o => o.FileName)
    })
    .SingleOrDefaultAsync();

我️ 将编辑您的问题,以便更清楚地了解您的问题。正如您从一个答案中看到的,他认为您只需要文件名属性的可能副本,而这个答案并不完全是我想要的解决方案,Dto是我需要的概念。我的解决方案需要的不仅仅是文件名,因此我将文档更改为以下内容:Docs=e.EmploymentDocuments.Select(o=>newemploymentbinary{BinaryFileID=o.BinaryFileID,FileName=o.FileName})