字母组在Linq中有一个扭曲

MB.*_*MB. 5 c# linq

我有一个棘手的问题.我正在寻找实现以下目标的最简洁,最简单的方法:

query = (from book in library.books.OrderBy(x=>x.title)
         group book by
         new { title = book.title[0].ToString(), yadiyada="" });
Run Code Online (Sandbox Code Playgroud)

其结果是图书馆中按第一个字母分组的所有书籍.Yadiyada是因为我的组对象不是简单的字符串而是对象.

我不知道是否有一个纯粹使得它使分组是"A","B","C",......"Z"的LINQ方式,但所有其他陷入所谓的"123单组!@ #".

换句话说,我只想对所有非字母字符(A-> Z + Rest)进行一次分组.

如果我得到冗长的话,我可以通过多种方式做到这一点(目前我只是简单地将两个Linq语句结合起来),但这不是这个问题的目的.我想知道是否有人可以想出一个非常简洁的方法来做到这一点......

Eld*_*iev 8

这取决于纯LINQ方式的含义.如果您想使用单个查询对其进行分组,可以尝试以下方法:

query = (from book in library.books.OrderBy(x=>x.title)
         let c = book.title[0]
         group book by
         new { title = char.IsLetter(c) ? c.ToString() : "123!@#", yadiyada="" });
Run Code Online (Sandbox Code Playgroud)

  • linq对实体不支持`char.IsLetter`. (2认同)