计算出价高于当前报价Linq to SQL的行数

时间:2016-12-08 08:55:54

标签: sql entity-framework

在下表中,想法是使用状态为1的较高出价计算每个出价,

id  rate    cur Request Sold    request at  status
1   13  USD 400 0   2016-12-08 11:28:01 1
2   13  USD 400 0   2016-12-08 11:29:01 1
3   12  USD 400 0   2016-12-08 11:29:01 1
4   12  USD 400 0   2016-12-08 11:31:01 1
5   10  USD 400 0   2016-12-08 11:31:01 1

        new     1           
        sold    2           

这是我运行的查询:

  int selectedBid = 5;
  decimal selectedBidOfer = 10;
  int higherbid = db.bids.Where(a=>a.StatusId == 1 &&
                                   a.bidId != selectedBid &&
                                   a.bidOffer>= selectedBidOfer ).Count();

  return Content(higherbid.ToString());

这将是每次更改的结果:

如果

  

int selectedBid = 5; decimal selectedBidOfer = 10;结果将是4,   这是正确的

     

int selectedBid = 4; decimal selectedBidOfer = 12;结果将是3,   这是正确的

     

int selectedBid = 3; decimal selectedBidOfer = 12;结果将是3,   这是不正确的,它应该只产生2个上限值

注意:这里bidId可能没有按顺序排列,所以我可以根据它进行检查,时间也没有按顺序意味着一个人可以在最后给出高费率....

那么在解释的情况下,我怎样才能找到状态为1的更高出价呢?

1 个答案:

答案 0 :(得分:0)

查询是正确的,你声明:

" int selectedBid = 3; decimal selectedBidOfer = 12;结果将是3,这是不正确的,它应该只产生2上限值"

您的陈述"哪个不正确"如果错误,则返回计数为3是正确的,因为您的数据库中bid = 12具有bidId!= 3,如果您希望在int selectedBid = 3时结果计数为2; decimal selectedBidOfer = 12那么这是你必须使用的查询

  int higherbid = db.bids.Where(a=>a.StatusId == 1 &&
                                   a.bidId != selectedBid &&
                                   a.bidOffer > selectedBidOfer ).Count();

更改不是a.bidOffer大于OR EQUALS selectedBidOfer,这是您的查询,我的查询是:a.bidOffer大于selectedBidOfer