У меня есть некоторые проблемы с linq to txt file. Txt файл имеет следующую специфическую структуру:C# Lambda to txt file
================ 09.01.2017 [8:51:11] created by VBScript ================
....some text
============================= END =============================
================ 16.01.2017 [9:49:09] created by VBScript ================
....some text
============================= END =============================
================ 18.01.2017 [8:43:50] created by VBScript ================
....some text
============================= END =============================
etc
Поэтому я хочу, чтобы выбрать все строки из этого файла, который начинается и заканчивается с «=» и выберите их индексы (позиции) в нем.
Первый шаг: я открыл и convertered его в список (потому что легче работать со списком)
string filekvitErrorGroupsResource = Utils.ReadTextResource(resourceName, Assembly.GetExecutingAssembly());
string[] stringSeparators = {"\r\n"};
string[] lines = filekvitErrorGroupsResource.Split(stringSeparators, StringSplitOptions.None);
return new List<string>(lines);
Второй шаг: Я пытался сделать простой запрос лямбда в список по условию:
var myQuery = lines.Where(l => l.StartsWith("=") && l.EndsWith("="))
.Select(l => new {idx = lines.IndexOf(l), body = l});
ПРОБЛЕМА: в результате я ожидаю получить список строк с уникальными индексами (IDX), но вместо этого я получил это:
Так как вы можете видеть, что линия с «END» не уникальна, почему?
Где находится Distinct()? – Hakunamatata
Distinct() здесь не помогает, он удаляет только все ссылки (idx = 8) line – whizzzkey
Это не уникально, потому что это одна и та же строка каждый раз. Индекс находит первое вхождение строки. Существует перегрузка, которая берет начальную позицию: https://msdn.microsoft.com/en-us/library/5xkyx09y(v=vs.110).aspx – briantyler