C# 在ASP.NET核心Web API的HttpGet方法中返回模型的单个属性

C# 在ASP.NET核心Web API的HttpGet方法中返回模型的单个属性,c#,linq,asp.net-core,asp.net-core-webapi,ef-core-3.1,C#,Linq,Asp.net Core,Asp.net Core Webapi,Ef Core 3.1,我必须在ASP.NET核心API中的GetAll方法内返回模型的单个属性。 这是我的模型: using System; using System.Collections.Generic; namespace ProjectWayneAPI.Models { public partial class Consignment { public Guid Id { get; set; } public DateTime? DateCreated { get; set; }

我必须在ASP.NET核心API中的GetAll方法内返回模型的单个属性。 这是我的模型:

using System;
using System.Collections.Generic;

namespace ProjectWayneAPI.Models
{
public partial class Consignment
{

    public Guid Id { get; set; }
    public DateTime? DateCreated { get; set; }
    public bool? Deleted { get; set; }
    public string CustomerReference { get; set; }
    public string ConsignmentNote { get; set; }
    public Guid AccountId { get; set; }
    public Guid BookedByUser { get; set; }
    public string DescriptionToLeave { get; set; }

    public virtual Account Account { get; set; }
    public virtual User BookedByUserNavigation { get; set; }
    public virtual User CheckedByUserNavigation { get; set; }
    public virtual User ModifiedByUserNavigation { get; set; }
    public virtual User QuotedByUserNavigation { get; set; }
}
}

我必须只返回托运单,但我必须在控制器的方法中提取所有托运单

这是我的控制器:

[Route("api/[controller]")]
[ApiController]
public class ConsignmentsController : ControllerBase
{
    private readonly WayneContext _context;

    public ConsignmentsController(WayneContext context)
    {
        _context = context;
    }

    //GET: api/Consignment Notes
    [Route("[connote]")]
    [HttpGet]
    public async Task<ActionResult<IEnumerable<Consignment>>> GetConsignmentNote()
    {
        var connote = await _context.Consignment
            .Include(x => x.ConsignmentNote)
            .ToListAsync();
        return connote;
    }
    // GET: api/Consignments
    [HttpGet]
    public async Task<ActionResult<IEnumerable<Consignment>>> GetConsignment()
    {
        var consignments = await _context.Consignment
            .Where(c => c.Deleted == false)
            .Include(bu=> bu.BookedByUserNavigation)
            .ToListAsync();
        return consignments; 
    }
}

我必须使用这个方法返回所有隐含的内容public async Task>>getcommitmentnote,如果您检查方法内部的linq查询,那么该查询将返回异常。在这种情况下,我如何覆盖[HttpGet]呢?

嗨,如果您尝试这样的方法会怎么样:

//[Route("[connote]")] < --remove route and call your method GET to verride httpget .. it will match the api/Consignments [GET]
    //[HttpGet]
    public async Task<ActionResult<IEnumerable<ConsignmentNote>>> Get()
    {
        var connote = await _context.Consignment
            .Include(x => x.ConsignmentNote)
            .ToListAsync();
        return connote.Select(xx=>xx.ConsignmentNote).ToList();
    }
希望它能帮助你

Include用于ie您的导航属性,如Account,而不是选择普通属性的子集,如CommissionNote

如果您只需要CommissionNote属性,则应选择新的寄售,并仅填充该特定属性:

var connote = await _context.Consignment
                            .Select(x => new Consignment 
                             { 
                                ConsignmentNote = x.ConsignmentNote
                             })
                            .ToListAsync();
return connote; // List<Consignment>

如果成功了,那么你应该投票并接受答案。点击复选框。我想你搞错了。我为我的回答道歉。我只是想为我的问题提供完整的答案。显然,如果没有你的回答,我可能不得不花更多的时间在谷歌上。
public async Task<ActionResult<IEnumerable<string>>> GetConsignmentNote() 
{
    var connote = await _context.Consignment
                                .Select(x =>  x.ConsignmentNote)
                                .ToListAsync();
    return connote; // List<string>
}