在下表中,想法是使用状态为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的更高出价呢?
答案 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