我有 2 个列表:一个字符串列表和一个具有相同长度和相同对应索引的双列表。我需要比较所有的字符串,找到具有相同字符的列表的索引,与它的顺序无关,并删除对应于两者的最高双精度值,
例子:
List<string> str= new List<string>();
str.add("efc");
str.add("abc");
str.add("cde");
str.add("cab");
str.add("fbc");
List<double> vlr= new List<double>();
vlr.add(0.1);
vlr.add(0.5);
vlr.add(0.4);
vlr.add(0.2);
vlr.add(0.3);
在这种情况下,必须删除“abc”=>(0.5),因为“cab”具有相同的字符和较低的对应值=>(0.2)。
这两个数组有一个 lambda 表达式??
我试过的:
var distinct = list .Select((str, idx) => new { Str = str, Idx = idx })
.GroupBy(pair => new HashSet<char>(pair.Str), HashSet<char>.CreateSetComparer())
.Select(grp => grp.OrderBy(p => p.Idx).First())
.ToList();