努力让我的计数正确。我相信我很接近,但如果数据库中没有记录,我需要它返回0。编译器不喜欢我现在拥有的东西。任何帮助,将不胜感激。感谢
var count = (_db.cart.Where(c => c.UserId == id)
.Select(c => (int) c.Quantity)).ToList().Count() ?? 0;
答案 0 :(得分:2)
您想使用Sum
,而不是Count
var totalQuantity = _db.cart.Where(c => c.UserId == id)
.Select(c => c.Quantity)
.DefaultIfEmpty(0)
.Sum();
答案 1 :(得分:1)
无需合并。
var count = _db.cart.Count(c => c.UserId == id); // get record count
如果你真的想要得到一笔钱:
var total = _db.cart.Where(c => c.UserId == id)
.Select(c => (int?)c.Quantity)
.Sum() ?? 0; // get total
仅供参考,关于您最初发布的代码......
您不想调用ToList().Count()
,因为调用ToList()
会执行您的查询并撤回数据。您将结束撤回数量列表并在本地执行计数,而不是生成只执行计数并返回单个数字的SQL语句。
答案 2 :(得分:0)
试试这个
var count=_db.cart.where(c=>c.Userid==id).Count();