我有这门课:
public class ExamReviewRequested
{
public List<ExamReviewRequest> Reviews { get; set;}
}
它的 reviews 属性有一个这个类的列表:
public class ExamReviewRequest
{
public string EventCode { get; set; }
public bool Requested { get; set; }
}
如何使用 LINQ 搜索特定的 EventCode 并返回带有该 EventCode 的选定 ExamReviewRequest?在我看来,这两个(Row.EventCode 具有我想要搜索的值):
ExamReviewRequest er = ViewBag.ExamReviews.Single(x => x.EventCode == Row.EventCode)
ExamReviewRequest er = ViewBag.ExamReviews.Reviews.FirstOrDefault(x => x.EventCode == Row.EventCode)
返回这个错误:
Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type
我看过几篇关于这个主题的帖子,但无法使其中任何一篇发挥作用。
最佳答案
当您分配 ExamReviews
时到 ViewBag
他们变成了dynamic
没有类型设置的对象。错误消息告诉您需要先转换它才能使用 Linq。
你能做什么
我看不到你在哪里分配 ViewBag.ExamReviews
所以如果它的类型是 IEnumerable<ExamReviewRequest>
然后:
var examReviews = (IEnumerable<ExamReviewRequest>)ViewBag.ExamReviews
var examReviewRequest = examReviews.Single(x => x.EventCode == Row.EventCode)
或者如果它是 ExamReviewRequested
类型然后:
var examReviews = (ExamReviewRequested)ViewBag.ExamReviews
var examReviewRequest = examReviews.Requests.Single(x => x.EventCode == Row.EventCode)
你应该做什么
你不应该分配 List<ExamViewRequest>
/ExamReviewRequested
到 ViewBag
.这样你可以这样做:
// Code to set model previous
var examReviewRequested = model.ExamReviews.Single(x => x.EventCode == Row.EventCode);
在哪里model
类型为 ExamReviewRequested
关于c# - Linq 搜索对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32868755/