这是我的场景!
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");
我需要使用 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}中提取
更新:谢谢!每个人!在@mlorbetske 和@shelleybutterfly 的帮助下,我想通了!
解决方案:
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()