Come ottengo un array di caratteri ripetuti da una stringa usando LINQ?

Se ho la seguente stringa:

string s = "abcdefghab"; 

Quindi come faccio a ottenere una stringa (o char []) che ha solo i caratteri che sono ripetuti nella stringa originale usando C # e LINQ. Nel mio esempio voglio finire con “ab”.

Anche se non necessario, stavo cercando di farlo in una singola riga di LINQ e fino ad ora avevo pensato:

 s.ToCharArray().OrderBy(a => a)... 

 String text = "dssdfsfadafdsaf"; var repeatedChars = text.ToCharArray().GroupBy(x => x).Where(y => y.Count() > 1).Select(z=>z.Key); 
 string theString = "abcdefghab"; //C# query syntax var qry = (from c in theString.ToCharArray() group c by c into g where g.Count() > 1 select g.Key); //C# pure methods syntax var qry2 = theString.ToCharArray() .GroupBy(c => c) .Where(g => g.Count() > 1) .Select(g => g.Key); 

Inoltre, una stringa è già un object IEnumerable, quindi non è necessario chiamare ToCharArray ();

 var qry = (from c in theString group c by c into g where g.Count() > 1 select g.Key); 

Questo lascia qry come IEnumerable, ma se hai davvero bisogno di un char [], è facile come qrt.ToArray() .