Próbuję filtrować listę ciągów na podstawie liczby słów w każdym ciągu. Zakładam, że przycinałeś dowolną białą przestrzeń na końcach łańcucha, a następnie policzyłeś liczbę spacji w ciągu, tak aby WordCount = NumberOfSpaces + 1. Czy to jest najbardziej efektywny sposób na zrobienie tego? Wiem, że do filtrowania na podstawie liczby znaków następujące działa dobrze ... po prostu nie mogę dowiedzieć się, jak napisać to zwięźle za pomocą C#/LINQ.Filtrowanie ciągu znaków na podstawie liczby słów
if (checkBox_MinMaxChars.Checked)
{
int minChar = int.Parse(numeric_MinChars.Text);
int maxChar = int.Parse(numeric_MaxChars.Text);
myList = myList.Where(x =>
x.Length >= minChar &&
x.Length <= maxChar).ToList();
}
Jakieś pomysły na liczenie słów?
UPDATE: To działało jak urok ... Dzięki Mathew:
int minWords = int.Parse(numeric_MinWords.Text);
int maxWords = int.Parse(numeric_MaxWords.Text);
sortBox1 = sortBox1.Where(x => x.Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Count() >= minWords &&
x.Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Count() <= maxWords).ToList();
Dzięki Mathew ... Poniższe działało jak urok! – Jeagr
int minWords = int.Parse (numeric_MinWords.Text); int maxWords = int.Parse (numeric_MaxWords.Text); sortBox1 = sortBox1.Where (x => x.Trim(). Split (nowy char [] {''}, StringSplitOptions.RemoveEmptyEntries) .Count()> = minWords && x.Trim(). Split (nowy char [] {''}, StringSplitOptions.RemoveEmptyEntries) .Count() <= maxWords) .ToList(); – Jeagr
Czy ta metoda jest bardziej wydajna niż korzystanie z zapytań LINQ? – Jeagr