Можете ли вы получить наибольшую длину String.Split в один лайнер? - PullRequest
1 голос
/ 11 февраля 2011

В следующем фрагменте кода есть ли способ не использовать foreach?Все, что должно произойти, это то, что если одна из разделенных частей превышает длину, я могу установить ее как недействительную.

Мой коллега уверен, что он использовал для этого однострочный фрагмент кода, но Google оставил мненет доказательств этого.

                else if (lineSplit[11].Length > Constant.EstimatedBirthdatesofChildren)
            {
                var estimatedBirthdatesofChildren = lineSplit[11].Split('~');
                foreach (String estimatedBirthdatesofChild in estimatedBirthdatesofChildren)
                {
                    if (estimatedBirthdatesofChild.Length > Constant.EstimatedBirthdatesofChild) valid = false;
                }
            }

Ответы [ 3 ]

3 голосов
/ 11 февраля 2011

Если вы используете C #> 3.5, вы можете сделать это одной строкой:

string valueToSplit = GetMyValue();
var maxLength = 10;


var valid = valueToSplit.Split('~').All((s) => s.Length <= maxLength);
3 голосов
/ 11 февраля 2011
lineSplit[11].Split('~').Max(s => s.Length)

Упс, вы имеете в виду, что вам нужен первый токен, длина которого превышает ожидаемую? Ваш вопрос не ясен, но если да, вы можете написать

valid = lineSplit[11].Split('~').Any(s => s.Length > Constant.EstimatedBirthdatesofChild)
2 голосов
/ 11 февраля 2011
estimatedBirthdatesofChildren.Split('~').Select(s=>s.Length).Max()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...