C# 连接两个表并对某一列求和
如果使用Linq到SQL和C的求和结果为null,我希望得到0 有人能帮我回答这个问题吗C# 连接两个表并对某一列求和,c#,linq-to-sql,C#,Linq To Sql,如果使用Linq到SQL和C的求和结果为null,我希望得到0 有人能帮我回答这个问题吗 internal decimal GetItemPurchasedByDate(linqToSqlDataContext db, int itemId, DateTime firstDay, DateTime lastDay) { var count = (from pl in db.tblPurchaseLines join p in db.tblPurchase
internal decimal GetItemPurchasedByDate(linqToSqlDataContext db, int itemId, DateTime firstDay, DateTime lastDay)
{
var count = (from pl in db.tblPurchaseLines
join p in db.tblPurchases on pl.PurchaseId equals p.PurchaseId
where pl.ItemId == itemId && p.PurchaseDate >= firstDay && p.PurchaseDate < lastDay
select pl.Qty).Sum();
return count;
}
据
空合并运算符??如果左操作数的值不为null,则返回该值;否则,它计算右操作数并返回其结果。这个如果左侧操作数的计算结果为非null,则运算符不计算其右侧操作数
你可以用??接线员
据
空合并运算符??如果左操作数的值不为null,则返回该值;否则,它计算右操作数并返回其结果。这个如果左侧操作数的计算结果为非null,则运算符不计算其右侧操作数
你可以用??接线员
我写了这段代码,因为我看到它是工作到目前为止,请如果有任何人有任何意见修改或优化,然后与我分享
var list = from pl in db.tblPurchaseLines
join p in db.tblPurchases on pl.PurchaseId equals p.PurchaseId
where pl.ItemId == itemId && p.PurchaseDate >= firstDay && p.PurchaseDate < lastDay
select new PurchaseLine
{
qty = pl.Qty
};
if (list == null || list.Count() == 0)
return 0;
return list.ToList().Sum(k => (decimal?)k.qty) ?? 0;
我写了这段代码,因为我看到它是工作到目前为止,请如果有任何人有任何意见修改或优化,然后与我分享
var list = from pl in db.tblPurchaseLines
join p in db.tblPurchases on pl.PurchaseId equals p.PurchaseId
where pl.ItemId == itemId && p.PurchaseDate >= firstDay && p.PurchaseDate < lastDay
select new PurchaseLine
{
qty = pl.Qty
};
if (list == null || list.Count() == 0)
return 0;
return list.ToList().Sum(k => (decimal?)k.qty) ?? 0;
计数是十进制的?@ggeorge yes它是十进制的计数是十进制的?@ggeorge yes它是十进制的并且不起作用,我得到了这个错误:空值不能分配给System类型的成员。decimal是一个不可为空的值类型尝试将自定义值传递给count,看看这个方法是否按预期工作,它是否起作用,因为我已经测试过了,如果有空值,它就会抛出异常。我做了一些变通,不知道这是否正确。尝试过但没有成功,我得到了以下错误:无法将空值分配给类型为System.Decimal的成员。Decimal是一种不可为空的值类型。请尝试将自定义值传递给count,以查看此方法是否按预期工作。它确实有效,因为我已经测试过了,如果有空值,它就会抛出异常。我做了一些变通,不知道这是否合适。尝试了但没有效果。尝试了但没有效果。
var list = from pl in db.tblPurchaseLines
join p in db.tblPurchases on pl.PurchaseId equals p.PurchaseId
where pl.ItemId == itemId && p.PurchaseDate >= firstDay && p.PurchaseDate < lastDay
select new PurchaseLine
{
qty = pl.Qty
};
if (list == null || list.Count() == 0)
return 0;
return list.ToList().Sum(k => (decimal?)k.qty) ?? 0;