0

我正在开发 MVC 应用程序,并且在控制器中使用 LINQ。

我正在尝试使用以下查询获得一个记录,但它给出了一个错误......

  Approval oAP = new Approval();
  oAP = db.Approvals.Where(e => (e.ApprovedBy.Id == loggedEmployee.Id) && (e.ReviewNo == oPaymentAdvice.ReviewCount));

有什么错误的语法吗?

得到了答案

oAP = db.Approvals.Where(e => (e.ApprovedBy.Id == loggedEmployee.Id) && (e.ReviewNo == oPaymentAdvice.ReviewCount)).FirstOrDefault();
4

2 回答 2

4

改变这个

e.ApprovedBy.Id = loggedEmployee.Id

为了

e.ApprovedBy.Id == loggedEmployee.Id

您正在比较不分配值。

你也可以添加这个

oAP = db.Approvals.Where(e => (e.ApprovedBy.Id == loggedEmployee.Id) && (e.ReviewNo == oPaymentAdvice.ReviewCount)).FirstOrDefault();

因为我假设您只想返回一个

于 2013-06-03T06:29:53.430 回答
0

一些备注:

您应该能够删除 Where:

oAP = db.Approvals.FirstOrDefault(e => (e.ApprovedBy.Id == loggedEmployee.Id) && (e.ReviewNo == oPaymentAdvice.ReviewCount));

就个人而言,我尽量避免使用 First 和 FirstOrDefault 函数,因为如果您知道只有一条记录并且想要强制执行此操作,则可以使用 SingleOrDefault:

oAP = db.Approvals.SingleOrDefault(e => (e.ApprovedBy.Id == loggedEmployee.Id) && (e.ReviewNo == oPaymentAdvice.ReviewCount));

如果您知道总会有(多于)一条记录,则可以删除“OrDefault”部分并使用 First() 或 Single()。

于 2013-06-03T08:27:27.233 回答