C# 比较并组合字符串以获得重复项

C# 比较并组合字符串以获得重复项,c#,string,linq,C#,String,Linq,我会尽量用最好的方式来描述我的问题 我有一个列表,上面有X字符串,阳离子,硬币,正午 我试图比较它们,找出每个字符字母被使用的次数最多,用它来获得该字符的编号,按字母顺序排列,并创建一个字符串 所以结果字符串应该是:acinoot 我所描述的是希望 编辑 到目前为止: for (int i = 0; i < currentWord.Length; i++) { string letter = word.Substring(i, 1); tempDuplicatedLe

我会尽量用最好的方式来描述我的问题

我有一个列表,上面有X字符串,阳离子,硬币,正午

我试图比较它们,找出每个字符字母被使用的次数最多,用它来获得该字符的编号,按字母顺序排列,并创建一个字符串

所以结果字符串应该是:acinoot


我所描述的是希望

编辑

到目前为止:

for (int i = 0; i < currentWord.Length; i++)
{
     string letter = word.Substring(i, 1);

     tempDuplicatedLetterList.Add(letter);               
}

// Which letters are repeated and how many times
var duplicatedQuery = tempDuplicatedLetterList.GroupBy(x => x)
                                      .Where(g => g.Count() > 1)
                                      .Select(y => new { Element = y.Key, Counter = y.Count() })
                                      .ToList();

我想到了这一点,尽管我认为可能有更干净的方法:

var characterSets = new string[] { "NOTION", "CATION", "COIN", "NOON" }
       .SelectMany(c => c.GroupBy(cc => cc)) // create character groups for each string, and flatten the groups
       .GroupBy(c => c.Key) // group the groups
       .OrderBy(cg => cg.Key) // order by the character (alphabetical)
       .Select(cg => new string(cg.Key, cg.Max(v => v.Count()))) // create a string for each group, using the maximum count for that character
       .ToArray(); // make an array

var result = string.Concat(characterSets);

我所描述的是希望。它是。不清楚的是:您已经尝试了什么来解决这个问题?如果我理解正确,您希望找到每个字符使用的次数最多,使用它来获得所需的字符数,按字母顺序排列,然后创建一个字符串。所以奶酪,山羊,松饼都能做出美味的奶酪,对吗?你能展示你为解决这个问题所做的努力吗?为什么结果是Noot,而不是NOACINOT?例如,为什么N和O在你的词中出现了两次?这个词的构造规则并不十分清楚yet@HimBromBeere我只是把它们按字母顺序排序,这样就不需要了。是的,这很有效。我需要通过一个列表,但这应该是可行的。谢谢。我能想出的唯一一种半灵巧的方法就是使用。聚合,但我不觉得这是一个很大的改进。只是测试了一下,它就工作了。非常感谢。