LINQ以返回null异常,如果列表为空

问题描述 投票:0回答:1

我面临的一个挑战是,我使用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

c# asp.net-mvc entity-framework linq
1个回答
0
投票

作为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();

反正感谢大家的支持。

© www.soinside.com 2019 - 2024. All rights reserved.