我正在尝试为我的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或者比较一些东西?
答案 0 :(得分:2)
如果我说得对,你已经使用这个requestQuery
检查用户之前是否已经请求了同一本书。您检查了它的值以及它是否null
而不是他Count()
。但这种情况的问题在于它不允许您的用户添加多本书。您可以使用if{} else{}
方法而不需要这个冗余的public bool LessBooks4u(RequestViewModel request)
{
return db.Requests.Count(b => b.BookID == request.BookId) < 3 && request.Quantity < 10;
}
语句,因为您的lical操作已经返回bool结果。你的方法可以是这样的:
<html>
<head>
<title>test page</title>
</head>
<body>
<script type="text/javascript" src="bluebird.js"></script>
<script type="text/javascript" >
function doTheThing () {
return new Promise (function (resolve, reject) {
setTimeout(function(){alert("2");},1000)
alert("1");
});
}
doTheThing().then(
function() {
alert("3");
}, function(error) {
alert("5");
}
);
</script>
</body>
</html>
答案 1 :(得分:1)
你的表情很复杂。使用Count:
可以轻松完成var totalCount = db.Requests.Count(x=>x.BookID == request.BookId);
return totalCount < 10
答案 2 :(得分:1)
试试这个,检查db中的图书数量是否小于10.只需将&&
替换为||
public bool LessBooks4u(RequestViewModel request)
{
var requestQuery = db.Requests.FirstOrDefault(b => b.BookID == request.BookId);
return requestQuery == null || request.Quantity < 10;
}