Asp.net mvc MVC C#选择位置
我正在尝试为以下内容添加“按ID筛选”: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
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);
}
}