0

私は MVC アプリを開発しており、コントローラーで LINQ を使用しています。

以下のクエリで 1 つのレコードを取得しようとしていますが、エラーが発生します...

  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();

私はあなたが1つだけを返したいと思っているので

于 2013-06-03T06:29:53.430 に答える
0

いくつかのコメント:

Whereをドロップできるはずです:

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

個人的には、First および FirstOrDefault 関数を使用しないようにしています。レコードが 1 つしかないことがわかっていて、これを強制したい場合は、SingleOrDefault を使用できるからです。

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

常に (複数の) レコードが存在することがわかっている場合は、「OrDefault」部分を削除して、First() または Single() を使用できます。

于 2013-06-03T08:27:27.233 に答える