【问题标题】:WebAPI Get() method to return list of all records matching criteriaWebAPI Get() 方法返回所有匹配条件的记录列表
【发布时间】:2018-08-01 12:10:05
【问题描述】:

当谈到 WebAPI/MVC/Entity Framework 时,我完全是个菜鸟,所以我按照这个问题底部的教程创建了一个 ASP.NET WebAPI,它链接到 SQL Server 并显示来自名为的表中的数据项目详情。

我的 ItemDetailController.cs 出现如下:

public IEnumerable<ItemDetail> Get()
{
    using (myDBEntities entities = new myDBEntities())
    {
        return entities.ItemDetail.ToList();
    }
}

public IEnumerable<ItemDetail> Get(int id)
{
    using (myDBEntities entities = new myDBEntities())
    {
        yield return entities.ItemDetail.FirstOrDefault(e => e.ItemDetailID == id);
    }
}

目前的作用

  1. Get() 返回 ItemDetail 表中的所有结果。

  2. Get(int id) 从 ID 与参数匹配的 ItemDetail 表中返回单个结果。

我希望它做什么

我想要第三个 Get() 方法,它从 ItemDetail 表中返回特定部门中的所有记录,例如

public IEnumerable<ItemDetail> Get(string departmentName)
{
    using (myDBEntities entities = new myDBEntities())
    {
        return entities.ItemDetail.ToList(e => e.DeptName== departmentName);
    }
}

但这会导致以下错误:

方法 'ToList' 没有重载需要 1 个参数

非常感谢任何帮助

谢谢

教程使用

https://www.c-sharpcorner.com/article/asp-net-web-api-and-sql-server/.

【问题讨论】:

  • return entities.ItemDetail.Where(e =&gt; e.DeptName == departmentName).ToList();

标签: sql-server asp.net-mvc entity-framework linq asp.net-web-api


【解决方案1】:

正如斯蒂芬·穆克所说

return entities.ItemDetail.Where(e => e.DeptName == departmentName).ToList();

(一直不明白为什么人们把答案写成 cmets)

你的“单身”也可以写成:

yield return entities.ItemDetail.Where(e => e.ItemDetailID == id).FirstOrDefault();

Where 子句放入FirstOrDefault 是FirstOrDefault 提供的功能,而ToList 没有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多