我有下一个Linq,我想通过c.RegisterId(string)以字符串开头分组。因此,例如,我希望所有下一个示例都属于同一组。
12345
1234500
123450
from c in _companyRepository.GetAll()
group c by c.RegisterId into grpCompany
select grpCompany
答案 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));