如果count为null,则lambda返回0

时间:2014-03-26 04:04:42

标签: c# sql entity-framework entity-framework-4 lambda

努力让我的计数正确。我相信我很接近,但如果数据库中没有记录,我需要它返回0。编译器不喜欢我现在拥有的东西。任何帮助,将不胜感激。感谢

var count = (_db.cart.Where(c => c.UserId == id)
            .Select(c => (int) c.Quantity)).ToList().Count() ?? 0;

3 个答案:

答案 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();