首页 > 解决方案 > 从方法返回一个 List<>

问题描述

我想List<string>从我的 ASP.NET API 调用中返回一个。我收到下面的编译错误 - 但不确定如何解决它。

无法将类型隐式转换System.Linq.IQueryable<<anonymous type: string compname, int invoicenum, decimal? invoiceamt, System.DateTime? invoicedate, System.DateTime? invoicepaddate>>System.Collections.Generic.List<ITD>. 存在显式转换(您是否缺少演员表?)

这是我的语法:

public IEnumerable<ITD> Get()
{
    List<ITD> result = new List<ITD>();
    XE entities = new XE();
    result = (from a in entities.Companies
              join b in entities.Invoices
              on a.compNumber equals b.compNumber
              select new
              {
                  compname = a.Company1,
                  invoicenum = b.InvoiceNum,
                  invoiceamt = b.InvoiceAmt,
                  invoicedate = b.InvoiceDueDate,
                  invoicepaddate = b.InvoicePaidDate
              });
    return result;
}

标签: c#.netlinq

解决方案


您正在返回匿名类型IQueryable而不是. 将您的代码更改为:IEnumerable<ITD>

select new ITD

如果您仍然收到错误,可能是因为您无法投影到映射的实体上,那么您需要创建一个具有实体所需属性的 DTO 类ITD,如下所示:

public class ITDDTO
{
    public string Company { get; set; }
    //And other properties
}

也不要忘记.ToList()在查询末尾添加。


推荐阅读