我正在使用实体框架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;
答案 0 :(得分:1)
我发现了错误。当控制来到这一行执行
Date= j.Date.Value.ToShortDateString()
但SQL Server数据库中的值已经是ShortDate格式。我认为DateTime类没有定义或异常处理机制来转换已经很短的DateTime到短日期时间格式。所以它停止执行。 我刚刚从code.my新代码行中删除了“ToShortDateString()”
Date= j.Date.Value;
每件事都运作良好
答案 1 :(得分:0)
您不能在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;