选择 - >参考本身(当前创建的列表)

时间:2018-01-05 23:39:04

标签: c# list linq dictionary select

有没有办法在创建时(在方法内部)引用List (IEnumerable)方法创建的Select

我有一个如下所示的词典:

Dictionary<char, char> d = new Dictionary<char, char>() 
{ 
  {'a', 'b'},
  {'b', 'a'},
  {'c', 'd'},
  {'d', 'c'},
  //...
};

它通过string.Join("", d.Select(...))转换为字符串。 字典(ab和ba)中的重复值被整理出来。 我试过这个:

                                   //Checks for an earlier swapped duplicate........If not, select it
d.Select(x => !enumerable.Contains(x.Value.ToString() + x.Key.ToString()) ? x.Key.ToString() + x.Value.ToString() : string.Empty);

这里,“enumerable”是指由Select方法创建的列表,但我还没有找到方法。

预期的最终结果应如下所示:"abcd"而非"abbacddc",只需加入键和值即可。

我可以用for循环来解决这个问题,但这需要额外的代码..

1 个答案:

答案 0 :(得分:3)

不,但您可以使用AggregateDistinct

var enumerable = d.Aggregate(string.Empty,
    (acc, kv) => string.Concat(acc,
                               kv.Key,
                               kv.Value))
                  .Distinct();

enumerable将是IEnumerable<char>,具有所需的输出。