c#程序在将LINQ日期转换为字符串时停止执行



我正在使用实体框架6学习c#。当我的程序控制到达以下代码行时。

Date= j.Date.Value.ToShortDateString()

它停止执行…

以下是实体框架连接查询代码

            SCIMSEntities db = new SCIMSEntities();
        var list = from i in db.tblVendors
                join j in db.tblVendorPaymentBillsHistories on i.Id equals j.Vendor_Id
                select new clsAddBillToVendor
                {
                    id= j.Id,
                    CompanyName= i.CompanyName,
                    BillNo= j.BillNo,
                    Details= j.Details,
                    BilllAmount= j.BillAmount.Value,
                    Date= j.Date.Value.ToShortDateString(),
                    TotalAmount= j.TotalAmount.Value
                };
             return list; 

我发现了错误。当控制到达这一行时执行

    Date= j.Date.Value.ToShortDateString()

,但值已经在SQL Server数据库是短日期格式。我认为DateTime类没有定义或异常处理机制来转换已经短的DateTime到短的DateTime格式。所以它停止了执行。我刚刚从代码中删除了"ToShortDateString()"。新的代码行是

    Date= j.Date.Value;

一切正常

你不能在LINQ to Entities中使用字符串函数,所以你需要创建一个IEnumerable,这样你才能使用LINQ to Entities:

        SCIMSEntities db = new SCIMSEntities();
        var (list = from i in db.tblVendors
            join j in db.tblVendorPaymentBillsHistories on i.Id equals j.Vendor_Id
            select new clsAddBillToVendor
            {
                j.Id,
                i.CompanyName,
                j.BillNo,
                j.Details,
                j.BillAmount,
                j.Date,
                j.TotalAmount
            })
         .AsEnumerable()
         .Select(x => new clsAddBillToVendor
                {
                    x.Id,
                    x.CompanyName,
                    x.BillNo,
                    x.Details,
                    x.BillAmount,
                    Date = x.Date.Value.ToShortDateString(),
                    x.TotalAmount
                })
         .ToList();
         return list; 

最新更新