我有一个字符串列表:
"55002",
"81512",
"81612",
"84515",
"84615",
"86358",
"86358",
"91128",
"94002"
我想在该列表中找到具有相同的2个首字符和相同的最后一个字符的项目,然后从列表中删除具有较低中间字符的项目。在这个例子中,相同的是:81512
和81612
我想删除81512
,同样会84515
和84615
我想删除84515
等。
您可以尝试以下方法:
var g = new string[] {"55002", ...};
var t=g.GroupBy(f => f.Substring(0, 2))
.Select(f =>f.OrderByDescending(a =>a ).First());
结果:
55002
91128
81612
84615
86358
94002
更新:
我可能错过了groupby应该同时计算最后两个字符的情况。
如果是这样的话:
var t=g.GroupBy(f => f.Substring(0, 2)+f.Substring( f.Length-2))
.Select(f =>f.OrderByDescending(a =>a ).First());
为了可视化:
看这段代码:
var g = new string[] {"55002",
"91128",
"81512",
"81712",
"81612",
"84516",
"84216",
"84615",
"86358",
"86358",
"94002"};
var t = g.GroupBy(f => f.Substring(0, 2) + f.Substring(f.Length - 2)).Select(f => new { key = f.Key, group = f.OrderByDescending(a => a)});
Console.Write(t);
我们将按“键”分组,并在每个正确的分组中排在第一位:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句