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或其他东西来比较?
如果我得到它是正确的,你已经使用这个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;
}