【发布时间】:2015-03-24 20:18:01
【问题描述】:
我有一个简单的 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()”方法。那么如何获得 QueueName 中的最后一个 ":" 呢?
我用“Reverse()”尝试过,但结果有点错误(gnirts 而不是 string)。
【问题讨论】:
-
那么 Linq to SQL 支持 Substring 和 IndexOf 吗?
-
你可以做两次
Reverse,如果这有效,但会产生镜像结果。 -
q.name.Substring(q.name.IndexOf(":") + 2完美运行!内查询双反转? -
为什么要将多个信息存储在一个字符串中?为什么不使用多个列,可能是新表
Company、Group和Queue以及主表中的外键。 -
我不存储它们。我仍然不允许触摸数据库(请不要对此提出任何问题)。所以我必须在我的编码中做所有事情。喜欢这个小部分。
标签: c# sql linq substring lastindexof