我有一个名为CLASS的表和Fields
**{BATCH, DEGREE, DEPT, SEM, SECTION, GROUP }**
Run Code Online (Sandbox Code Playgroud)
我有以下记录
记录1:{2009,BE,CSE,3Sem,ASec,1Group}
Record2:{2009,BE,CSE,3Sem,ASec,2Group}
Record3:{2009,BE,ECE,4Sem,ASec,1Group}
Record4:{2009,BE,ECE,4Sem,ASec,2Group}
我需要选择不同的记录忽略GROUP并仅考虑以下内容
{批次,学位,部门,SEM,部分}
所以它应该返回以下2个不同的记录
Run Code Online (Sandbox Code Playgroud)Record1: **{ 2009 , B.E , CSE , 3Sem , ASec , 1Group }**DistinctRecord:1 ------------------------(OR)**
Run Code Online (Sandbox Code Playgroud)Record2: **{ 2009 , B.E , CSE , 3Sem , ASec , 2Group }**----- (AND)
Run Code Online (Sandbox Code Playgroud)Record3: **{ 2009 , B.E , ECE , 4Sem , ASec , 1Group }**DistinctRecord:2 ------------------------ (OR)
Run Code Online (Sandbox Code Playgroud)Record4: **{ 2009 , B.E …
这是我的情景!
List<String> list = new List<String>();
list.Add("E9215001");
list.Add("E9215045");
list.Add("E1115001");
list.Add("E1115022");
list.Add("E1115003");
list.Add("E2115041");
list.Add("E2115042");
list.Add("E4115021");
list.Add("E5115062");
Run Code Online (Sandbox Code Playgroud)
我需要使用C#和LINQ从上面的列表中提取以下常用部分
E92150 - >摘自{*E92150*01,*E92150*45}
E11150 - >摘自{*E11150*01,*E11150*22,*E11150*03}
E21150 - >摘自{*E21150*41,*E21150*42}
E41150 - >摘自{*E41150*21}
E51150 - >摘自{*E51150*62}
list.Select((item, index) => new {
Index=index,
Length=Enumerable.Range(1, (item.Length-2)) //I'm ignoring the last 2 characters
.Reverse()
.First(proposedLength => list.Count(innerItem =>
innerItem.StartsWith(item.Substring(0, proposedLength))) >
1)}).Select(n => list[n.Index].Substring(0, n.Length)).Distinct()
Run Code Online (Sandbox Code Playgroud)