I have 2 lists: a string list and a double list with same length and with same index of correspondence. I need to compare all the strings, find the indexes of the list that has the same characters, independent of its order, and delete the highest double value that corresponds to both, 

***Example:***

```
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);

```

and this case, "abc" => (0.5) must be deleted because "cab" has the same characters AND lower correspondent value =>(0.2).

There is a lambda expression for this 2 arrays??

What I've tried:

```
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();

```