Рейтинг:
11
#realJSOP
Я не думаю, что это приведет к тому, что вы на самом деле ищете.
Попробовать это:
var portdetails = lines.Where(acc => lines.IndexOf(acc) >= 200 && lines.IndexOf(acc) <= 400 && acc.Trim().StartsWith("PORTDTLS ").ToList();
После того как вы получите строки, затем разделите их на разделитель-запятую.
Другой вопрос - всегда ли диапазон индексов будет 200-400? Откуда ты это знаешь? Как вы можете это гарантировать? Я думаю, вам нужно сделать шаг назад и снова взглянуть на проблему.
jinesh sam
Спасибо Джон:) Для поиска индекса у меня есть отдельный метод
Philippe Mori
Я думаю, что это решение было бы неэффективным, как это могло бы быть... например, O(n2) вместо O (n), поскольку я не верю, что Linq to object оптимизирует такое использование IndexOf
Кроме того, если в списке есть дубликат, вы можете не получить ожидаемого результата, так как он, вероятно, будет принимать индекс первого вхождения строки вместо фактического. Таким образом, в Примере OP, если одна и та же строка существует с индексами 100 и 300, вы, вероятно, не получите ни того, ни другого...
#realJSOP
Я просто дал ему ответ, который он искал. Меня не волнует "эффективность", потому что это не мой код. Вызов ToList () даже не нужен, Но это то, что он делал, так что это то, что я сделал. Что касается использования linq, то linq , как известно, работает медленнее, особенно если вы начинаете укладывать последующие вызовы linq друг на друга. Итак, вы можете видеть, что я прекрасно осведомлен о "эффективности", но предпочел игнорировать их.
Технически мой ответ уместен и не гарантирует вашего 2-го голоса. Кстати, я не заметил от вас ответа на этот вопрос - просто критика ответов, которые уже были здесь.
Наконец, я точно знаю, с какими данными он работает, потому что я ответил на его предыдущий вопрос относительно того же набора данных.
Philippe Mori
Ну, я не предоставил решение 3 + Мой комментарий был бы моим ответом...
Хотя не всегда нужно беспокоиться об эффективности, я верю в то, что написание кода достаточно эффективно. Таким образом, в подобном случае я действительно считаю, что использование Skip
и Take
как это решение 3 стоит 2 дополнительных голосов.