Lambda条件不成立

本文关键字:条件 Lambda | 更新日期: 2023-09-27 18:08:38

我试图添加一个条件到我的lambda表达式。所以我想在库存中最多添加10本书,每个用户最多添加3本书。

这是我到现在为止所尝试的。我只能添加3本书,但如果我有5本哈利波特,我就不能添加更多,我的最大值是10本。

public bool LessBooks4u(RequestViewModel request)
{
     var requestQuery = db.Requests.FirstOrDefault(b => b.BookID == request.BookId);
     if (requestQuery==null && request.Quantity < 10)                             
     {
         return true;
     }
     else 
         return false;          
}

我猜我需要使用group by或其他东西来比较?

Lambda条件不成立

如果我得到它是正确的,你已经使用这个requestQuery来检查用户之前已经请求了同一本书。你检查了它的值,如果是null,他就不是。但是这个条件的问题是,它不允许用户添加多本图书。你可以使用Count()方法代替,你真的不需要这个多余的if{} else{}语句,因为你的逻辑操作已经返回bool结果。你的方法可以是这样的:

public bool LessBooks4u(RequestViewModel request)
{
     return db.Requests.Count(b => b.BookID == request.BookId) < 3 && request.Quantity < 10;
}

你把表达式复杂化了。使用Count:

可以简单得多
var totalCount = db.Requests.Count(x=>x.BookID == request.BookId);
return totalCount < 10

检查db中的图书数量是否小于10。将&&替换为||

public bool LessBooks4u(RequestViewModel request)
{
     var requestQuery = db.Requests.FirstOrDefault(b => b.BookID == request.BookId);
     return requestQuery == null || request.Quantity < 10;               
}