0

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

12345
1234500
123450


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

3 回答 3

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

足够。

于 2013-08-08T10:18:26.933 回答
1

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

from c in _companyRepository.GetAll() 
group c by c.RegisterId.Substring(0, 5) into grpCompany 
select grpCompany
于 2013-08-08T10:19:38.017 回答
1

你可以这样做

_companyRepository.GetAll().GroupBy(x=>x.Substring(0,4));
于 2013-08-08T10:26:11.507 回答