lambda条件不起作用

时间:2015-08-18 07:41:00

标签: c# model-view-controller lambda

我正在尝试为我的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或者比较一些东西?

3 个答案:

答案 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;               
}