Asp.net mvc MVC C#选择位置

Asp.net mvc MVC C#选择位置,asp.net-mvc,linq,Asp.net Mvc,Linq,我正在尝试为以下内容添加“按ID筛选”: public ActionResult Index() { var model = from o in new MainDBContext().OffLinePayments select new EditOffLinePayment { ID = o.ID, Amount = o.Amount

我正在尝试为以下内容添加“按ID筛选”:

public ActionResult Index()
{
    var model = from o in new MainDBContext().OffLinePayments
                select new EditOffLinePayment 
                {
                    ID = o.ID,
                    Amount = o.Amount 
                };
    return View(model);
}
我想做的是:

public ActionResult Index(long? id)
{
    if (id != null)
    {
        var model = from o in new MainDBContext().OffLinePayments
                    **Where Assigned_ID == id**
                    select new EditOffLinePayment 
                    {
                        ID = o.ID,
                        Amount = o.Amount 
                    };
        return View(model);
    }
    else 
    {       
        var model = from o in new MainDBContext().OffLinePayments
                    select new EditOffLinePayment 
                    {
                        ID = o.ID,
                        Amount = o.Amount 
                    };
        return View(model);
    }
}
试一试


如果我理解正确,您的问题是编译器不允许您在查询中写入
where o.Assigned_ID==ID

这是因为
id
是一个
可空的
,它不能隐式转换为
长的
(它
离线支付。分配的\u id
可能是)


您需要编写
,其中o.Assigned\u ID==ID.Value
。请看一下该属性的功能,这样您就不会感到意外了。

一个更简洁、更简短、可读性更强的语法如下所示:

public ActionResult Index(long? id){ 
    using (var ctx = new MainDBContext())
    {
        var entities = ctx.OfflinePayments.Where(e => !e.HasValue || e.Assigned_ID == id.Value);

        var model = entities.Select(e => new EditOfflinePayment { ID = e.ID, Amount = e.Amount }).ToList();
        return View(model);
    }
}

问题似乎是他试图写
Assigned\u ID==ID
而不是
o.Assigned\u ID==ID
public ActionResult Index(long? id){ 
    using (var ctx = new MainDBContext())
    {
        var entities = ctx.OfflinePayments.Where(e => !e.HasValue || e.Assigned_ID == id.Value);

        var model = entities.Select(e => new EditOfflinePayment { ID = e.ID, Amount = e.Amount }).ToList();
        return View(model);
    }
}