Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 连接两个表并对某一列求和_C#_Linq To Sql - Fatal编程技术网

C# 连接两个表并对某一列求和

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

如果使用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.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;