这是我的控制器中的代码片段
[HttpPost]
public ActionResult Cancel(string id,FormCollection collection)
{
//This is how I would like to declare appt but I cannot seem to correctly pass id into this method
//var appt = Application.Session.GetObjectFromOid<Appointment>(new ObjectId(id));
//I am trying to do it this way instead but I get an error
var appt = (Appointment)Application.Appointments.Where(a=>a.Id.Equals(collection["Id"]));
.....
}这是我得到的错误:无法将'WhereListIterator`1Web.Model.Appointment‘类型的对象强制转换为’Web.Model.Appoinement‘类型。
这是我的观点:
<input type="button" value="Save" onclick="updateCancel(); return false;" /><button>Save</button>这是我的函数
function updateCancel() {
$('#cancel').ajaxSubmit({
});
}那么为什么我会得到这个错误呢?或者,有没有一种方法可以将Model.Data.Id传递到我的函数中,这样我就可以只使用id?
发布于 2012-06-15 00:26:18
这就是我最终使用的,它起作用了。
var appt = Application.Session.GetObjectFromOid<Appointment>(new ObjectId(id));发布于 2012-03-09 06:23:25
Where子句返回一个迭代器。选择您要使用的内容。也就是说,如果你只想要一个结果,你可以使用FirstOrDefault。您还可以使用索引,如[1]。
var appt = (Appointment)Application.Appointments.Where
(a=>a.Id.Equals(collection["Id"]))
.FirstOrDefault();请注意,当未找到项目时,FirstOrDefault将返回null,因此请务必检查结果值。
附言:你可能不需要你的演员在那里。如果没有(Appointment,由于标题中的错误,这应该可以正常工作,因为列表中的项是Appointment类型的。
发布于 2012-06-15 07:19:26
在使用LINQ运算符时,需要记住的一件事是,它们返回一个可以分配给IEnumerable的对象。
LINQ
在这两种情况下,如果没有找到匹配项,"OrDefault“操作符将返回一个null,但其他两个操作符会抛出异常。
https://stackoverflow.com/questions/9625955
复制相似问题