LINQ组由“包含字符串”

时间:2013-08-08 10:16:10

标签: c# linq entity-framework linq-to-sql

我有下一个Linq,我想通过c.RegisterId(string)以字符串开头分组。因此,例如,我希望所有下一个示例都属于同一组。

12345
1234500
123450


from c in _companyRepository.GetAll() 
group c by c.RegisterId into grpCompany 
select grpCompany

3 个答案:

答案 0 :(得分:2)

var res = from c in _companyRepository.GetAll() 
          group c by c.RegisterId.Length <= 5 ? 
                     c.RegisterId : 
                     c.RegisterId.Substring(0, 5) into grpCompany 
          select grpCompany

你想要对前5个字符进行分组,对吧? : - )

我会注意到SQL执行的查询可能不需要长度检查。

SELECT SUBSTRING('Hello', 1, 10000)

始终有效(返回Hello)。这与.NET "Hello".Substring(0, 10000)将爆炸的不同,所以可能

var res = from c in _companyRepository.GetAll() 
          group c by c.RegisterId.Substring(0, 5) into grpCompany 
          select grpCompany

就够了。

答案 1 :(得分:1)

您必须决定左侧要考虑基本公共标识符的字母数(例如5)。

from c in _companyRepository.GetAll() 
group c by c.RegisterId.Substring(0, 5) into grpCompany 
select grpCompany

答案 2 :(得分:1)

你可以这样做

_companyRepository.GetAll().GroupBy(x=>x.Substring(0,4));