我今天开始使用 Linq,遇到了一个我找不到答案的问题。我正在查询一个简单的 SQL Server 数据库,其中包含一些员工记录。其中字段之一是全名 (cn)。我认为通过在第一个空格处分割全名来按名字分组会很有趣。我试过了
group by person.cn.Split(separators)[0]
但是遇到了一个冗长的运行时异常(看起来很像 C++ 模板实例化错误)。
然后我尝试按名字的几个字母进行分组:
group by person.cn.Substring(0,5)
效果很好,但不是我想要的。
我想知道两件事:
- 为什么第一个示例看起来与第二个示例如此接近,却不起作用?
- 知道在幕后发生的是 SQL 事情,有什么办法可以有效地完成此类事情
谢谢
安德鲁
最佳答案
Split 没有翻译成 SQL。
那么,如何在不拆分的情况下进行字符串操作呢?疯狂作弊(未经测试):
string oneSpace = " ";
string fiftySpace = " ";
var query =
from person in db.Persons
let lastname = person.cn.Replace(oneSpace, fiftySpace).SubString(0, 50).Trim()
group person by lastname into g
select new { Key = g.Key, Count = g.Count };
关于LINQ 按问题分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/142903/