如何使用linq从URL获取最后一个子字符串

时间:2019-06-12 14:08:54

标签: c# .net entity-framework linq

我有这个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

我必须从链接中获得职位ID(41)。当我在控制台应用程序中分别运行此( JobLink.Split('/')。Last())时,将从链接中获取正确的作业ID。在linq中使用时。

我遇到了这样的例外情况:

  

LINQ to Entities无法识别方法'System.String   Format(System.String,System.Object [])'方法,该方法不能   被翻译成商店表情。

有人知道为什么吗?有谁知道这样做的另一种方法以使其起作用?

1 个答案:

答案 0 :(得分:0)

要么使用答案中提到的方法,要么@Stephen Kennedy在评论中将其链接到this question,或者通过可以映射到数据库查询的某种方式来拆分字符串-这应该起作用:

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

/编辑:已更新为LastIndexOf is not supported