我面临的一个挑战是,我使用LINQ使用采取方法来获取前5条记录,但如果该列表为空,则下列异常抛出它:
无法转换的类型 'System.Nullable`1 [[System.Int64,mscorlib程序,版本= 4.0.0.0,文化=中性公钥= b77a5c561934e089]]' 为类型 'System.Object的'。 LINQ到实体仅支持浇铸EDM原语或枚举类型。
所以,请指导我,我怎么能解决这个问题。
下面我提供我的示例代码
openTickets_Result = (from tic in db.Tickets1
join com in db.Company on tic.company_id equals com.id
join bra in db.Branch on tic.branch_id equals bra.id
join use in db.Users on tic.assinged_to equals use.Id
where companyIds.Any(x => x.Equals((long)tic.company_id))
&& branchIds.Any(x => x.Equals(tic.branch_id))
&& tic.status == "Open"
&& tic.priority == "High"
select new Details {
Assinged_To = use.FullName,
Company_Name = com.name,
Branch_Name = bra.branch_name,
ticketName=tic.Name
}).OrderBy(x => x.Create_Date).Take(5).ToList();
取方法是给一个异常,如果列表中的某个时候是empty/null
。
作为branchIds长不是null类型,x => x.Equals(tic.branch_id)和这里tic.branch_id长null类型,因此需要强制转换它
openTickets_Result = (from tic in db.Tickets1
join com in db.Company on tic.company_id equals com.id
join bra in db.Branch on tic.branch_id equals bra.id
join use in db.Users on tic.assinged_to equals use.Id
where companyIds.Any(x => x.Equals((long)tic.company_id)) && branchIds.Any(x => x.Equals((long)tic.branch_id)) && tic.status == "Open" && tic.priority == "High"
select new LiveTickets
{
Assinged_To = use.FullName,
Company_Name = com.name,
Branch_Name = bra.branch_name,
ticketName=tic.Name
}).OrderBy(x => x.Create_Date).Take(5).ToList();
反正感谢大家的支持。