Как получить массив повторяющихся символов из строки, используя LINQ? - PullRequest
3 голосов
/ 29 октября 2008

Если у меня есть следующая строка:

string s = "abcdefghab";

Тогда как мне получить строку (или символ []), в которой есть только символы, которые повторяются в исходной строке с использованием C # и LINQ. В моем примере я хочу получить «ab».

Хотя это и не нужно, я пытался сделать это в одной строке LINQ и до сих пор придумал:

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

Ответы [ 3 ]

7 голосов
/ 29 октября 2008
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);
7 голосов
/ 29 октября 2008

Кроме того, строка уже является IEnumerable, поэтому вам не нужно вызывать ToCharArray ();

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

Это оставляет qry как IEnumerable, но если вам действительно нужен char [], это так просто, как qrt.ToArray().

7 голосов
/ 29 октября 2008
String text = "dssdfsfadafdsaf";
var repeatedChars = text.ToCharArray().GroupBy(x => x).Where(y => y.Count() > 1).Select(z=>z.Key);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...