Как получить последнюю подстроку из URL, используя linq - PullRequest
1 голос
/ 12 июня 2019

У меня есть этот запрос linq

List<Details> DetailList = new List<Details>();

DetailList = (from areadetails in context.AreaDetails.Where(x => (bool)x.IsActive && x.Area == area) 
                                  join jobdetails in context.JobDetails.Where(x => x.IsActive) on jobdetails.BuildDetailID equals areadetails.BuildDetailID
                                  select new Details
                                  {
                                      Area = areadetails.AreaName,
                                      JobLink = (jobdetails.EJ2JobLink != null) ? jobdetails.JobLink + "/console" : null,
                                      JobId = (jobdetails.EJ2JobLink != null) ? jobdetails.JobLink.Split('/').Last() : null
                                  }).ToList();

JobLink = job / it / development / 41

Мне нужно получить идентификатор работы (41) по ссылке.Когда я запускаю это ( JobLink.Split ('/'). Last () ) отдельно в консольном приложении, получают правильный идентификатор задания по ссылке. Когда я использовал в linq.

Я получил следующее исключение:

LINQ to Entities не распознает метод «System.String Format (System.String, System.Object [])», и этоМетод не может быть переведен в выражение магазина.

Кто-нибудь знает почему?Кто-нибудь знает альтернативный способ сделать это, чтобы заставить его работать?

1 Ответ

0 голосов
/ 12 июня 2019

Либо используйте подход, упомянутый в ответе, который @Stephen Kennedy связал в комментарии с этим вопросом , либо разбейте строку каким-либо образом, который можно сопоставить с запросом к базе данных - это должно сработать:

 JobId = (jobdetails.EJ2JobLink != null) ? jobdetails.JobLink.Substring(jobDetails.JobLink.Length - EntityFunctions.Reverse(e.jobDetails.JobLink).IndexOf('/') + 1) : null

/ Редактировать: Обновлено как LastIndexOf не поддерживается .

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