C# LINQ获取特殊字符的最后位置

C# LINQ获取特殊字符的最后位置,c#,sql,linq,substring,lastindexof,C#,Sql,Linq,Substring,Lastindexof,我有一个简单的LINQ查询,通过EF查询LINQ到实体 var QueueList = (from q in context.queues select new { Qid = q.id, Qname = q.name.Substring(q.name.IndexO

我有一个简单的LINQ查询,通过EF查询LINQ到实体

var QueueList = (from q in context.queues                                        
                 select new { 
                             Qid = q.id, 
                             Qname = q.name.Substring(q.name.IndexOf(":") + 2) 
                 }).ToList();
我的问题是Qname。数据库中的名称通常如下所示:

公司::队列名称

但现在我有几个新队列,其名称如下所示:

公司::组::队列名称

所以我不需要在字符串中找到第一个:而是最后一个

SQL不支持LastIndexOf方法。那么如何在队列名称中获得最后一个:呢


我尝试了反向操作,但结果是gnirts而不是字符串有点错误。

如果我是你,我会放弃尝试使用转换为Sql字符串函数的函数来处理字符串

取而代之的是,只需选择完整的字符串并在检索后对其进行翻译

即:


将Substring/LastIndexOf函数移到ToList之后意味着它们只是作用于已检索字符串的.Net本机函数,如果我是你,我会放弃使用转换为SQL字符串函数的函数来进行字符串操作

取而代之的是,只需选择完整的字符串并在检索后对其进行翻译

即:


将Substring/LastIndexOf函数移到ToList之后意味着它们只是作用于已检索字符串的.Net本机函数,而不必转换为作用于数据库的SQL函数。

所以Linq to SQL支持Substring和IndexOf?如果可以,可以执行两次反向操作,但是,生成镜像的result.q.name.Substringq.name.IndexOf:+2非常有效!在查询中,为什么要在一个字符串中存储多个信息?为什么不在主表中使用多列,可能是新表company、Group和Queue以及外键,我不存储它们。我仍然不允许接触数据库,请不要问这个问题。所以我必须在我的编码中做所有的事情。就像这一小部分。那么Linq to SQL支持子字符串和IndexOf?如果可以的话,您可以执行两次反向操作,但是生成镜像结果。q.name.Substringq.name.IndexOf:+2非常有效!在查询中,为什么要在一个字符串中存储多个信息?为什么不在主表中使用多列,可能是新表company、Group和Queue以及外键,我不存储它们。我仍然不允许接触数据库,请不要问这个问题。所以我必须在我的编码中做所有的事情。就像这个小部件一样。工作得很好-我尝试过将这个匿名队列列表写入另一个队列,或者覆盖Qname,这是不可能的。但是我从来没有想过要选择查询本身——非常感谢,没有问题,很乐意帮助!工作完美-我尝试过将这个匿名队列列表写入另一个队列,或者覆盖Qname,这是不可能的。但是我从来没有想过要选择查询本身——非常感谢,没有问题,很乐意帮助!
var QueueList = (from q in context.queues                                        
                 select new { 
                             Qid = q.id, 
                             Qname = q.name 
                 }).ToList()
    .Select(x => new {
         Qid = x.Qid, 
         Qname = x.Qname.Substring(x.Qname.LastIndexOf(":") + 1) 
    });