linq Возвратите пустое исключение возврата, если список пуст - PullRequest
0 голосов
/ 08 февраля 2019

Я столкнулся с одной проблемой: я использую LINQ, чтобы получить первые 5 записей с использованием метода Take, но если список пуст, то его исключение выдает следующее:

Невозможно привести тип'System.Nullable`1 [[System.Int64, mscorlib, версия = 4.0.0.0, культура = нейтральный, PublicKeyToken = b77a5c561934e089]]' для ввода 'System.Object'.LINQ to Entities поддерживает приведение только типов примитивов и перечислений 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();

Метод Take дает исключение, если список когда-нибудь равен empty/null.

1 Ответ

0 голосов
/ 08 февраля 2019

как branchIds - это длинный не нулевой тип, x => x.Equals (tic.branch_id) и здесь tic.branch_id - это длинный нулевой тип, поэтому необходимо ввести его

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

В любом случае, спасибо всем за поддержку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...