c# - 在 ASP.NET MVC 3 中初始化一个空白的 dbSet

标签 c# .net asp.net-mvc-3 linq

我在 if 语句中定义一个变量,然后尝试在该语句的上下文之外使用该变量。我如何在 if 语句之外初始化一个空的 dbSet 以便 viewModel 可以看到/填充它?

这就是我想要完成的:

if (order.type.ToString() == "Rush")
{
    var filteredOrders = db.Orders.Where(a => a.rushID == order.rushID).ToList(); 
}
else if (order.type.ToString() == "Standard")
{
    var filteredOrders = db.Orders.Where(a => a.standardID == order.standardID).ToList();
}
else
{
    return HttpNotFound();
}

var viewModel = new OrderDetailsViewModel
{
    PastOrders = filteredOrders,  // filteredOrders doesn't exist here
    Order = order;
};

最佳答案

IEnumerable<Order> filteredOrders; // or IList<Order>, etc., as your prefer

switch (order.type.ToString())
{
    case "Rush":
        filteredOrders = db.Orders.Where(a => a.rushID == order.rushID).ToList();
    case "Standard":
        filteredOrders = db.Orders.Where(a => a.standardID == order.standardID).ToList();
    default::
        return HttpNotFound();
}

var viewModel = new OrderDetailsViewModel
{
    PastOrders = filteredOrders,
    Order = order;
};

或更好:

Func<Order, bool> filter;

switch (order.type.ToString())
{
    case "Rush":
        filter = a => a.rushID == order.rushID;
    case "Standard":
        filter = a => a.standardID == order.standardID;
    default::
        return HttpNotFound();
}

var viewModel = new OrderDetailsViewModel
{
    PastOrders = db.Orders.Where(filter).ToList(),
    Order = order;
};

关于c# - 在 ASP.NET MVC 3 中初始化一个空白的 dbSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14513653/

相关文章:

c# - 使用反射优化对象创建

c# - 业务对象和数据层

jquery - ASP.NET MVC3 : ValidationType ModelClientValidationRule

asp.net-mvc-3 - 具有由多个类实现的接口(interface)的依赖注入(inject)

c# - 修剪字符串,删除 c# 中的最后一个字符

c# - NULL值问题——数据库表

c# - 回避异常和 "a function evaluation has timed out"

c# - 确定类型是否为静态

C# 创建隐藏事务

asp.net-mvc - 调用 dropdownlist 所选值作为 @html.action 路由值