LINQ 按问题分组

标签 linq

我今天开始使用 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/

相关文章:

c# - IQueryable with Foreach 结果

c# - Mono 和 Linq 聚合方法。尝试将项目添加到新列表时出错

c# - 如何使用 linQ 访问列表中的上一个项目?

linq - 使用 LINQ 的魔力 - 如何为每个匹配的条件调用委托(delegate)?

c# - 使用 LINQ 从 C# 中的字符串获取首字母缩略词?

c# - 对数组中的 50+ 位数字进行排序

c# - 使用 EntityFramework 搜索关键字

c# - 有没有办法使用 LINQ 表达式填充集合?

c# - OrderBy 使用 Dynamic Linq with Relation

C# - 没有用于 SqlMethods 的 Intellisense (Linq/EntityFramework)