C# LINQ获取特殊字符的最后位置
我有一个简单的LINQ查询,通过EF查询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
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)
});