c# - 是否可以使用所有记录或匹配 id 方法从数据库中检索记录?

标签 c# asp.net-mvc entity-framework

基本上,我想知道是否可以使用 Entity Framework 作为示例,在提供的 id 与表中的任何 id 不匹配时从数据库表中检索所有记录,但如果有 id匹配然后只检索那些记录。

如果使用 if 语句或 ?: 表达式,显然可以做到这一点,如下例所示。

var dbDocuments = new List<tblSalesQuoteDocument>();

    if (id < 0)
        dbDocuments = dbContext.tblSalesQuoteDocuments.ToList();
    else
        dbDocuments = dbContext.tblSalesQuoteDocuments.Where(x => x.HeaderId == id).ToList();

但我觉得这很丑陋,因为如果您想要所有记录,您的 URL 基本上是 Documents/Index/-1 或任何小于 0 的值。

有没有更好的办法?

为什么我想要一个 ActionResult 是因为我在其中做了很多过滤和代码特定的东西。我可以使用两种方法,一种用于所有记录,另一种用于特定记录。

那么我应该按照上面的问题来做,还是只使用两种方法并将我所有的过滤和其他代码抽象到辅助方法中以减少代码重复?

最佳答案

您可以根据需要添加过滤器表达式。示例:

ActionResult MyAction(int? id = null)
{
    // ...

    IQueryable<QuoteDocuments> docs = dbContext.tblSalesQuoteDocuments;

    if (id != null)
    {
        docs = docs.Where(x => x.HeaderId == id.Value);
    }

    var list = docs.ToList();

    // ...
}

关于c# - 是否可以使用所有记录或匹配 id 方法从数据库中检索记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40300843/

相关文章:

c# - 更改 DropDownList 的 SelectList

c# - 需要 CS1001 网站标识符

C# - 如何读取和写入二进制文件?

c# - 需要能够将丹麦小数传递给 MVC Controller

C# EF Code first - 创建数据库和添加数据

c# - 这个语法有什么作用?如果(obj 是 SomeType obj2)

javascript - 如何安装独立的 ember 路由器?

c# - MVC5 中数据库的下拉列表

c# - 无法将值 NULL 插入 EF 6.1.3 中的列

c# - 如何从 Entity Framework 元数据 EntityType 对象中获取相应的 POCO 对象类型?