不要なコードは残したくありませんが、「安全」でもありたいと考えています。経験的な観察によると、以下の OrderBy は何もしないことが示されています。List は既に正しく並べられています。その場合に頼って、その OrderBy 行を削除できますか?
HashSet<int> hashSet = new HashSet<int>();
List<int> listInts = new List<int>();
using (var file = new System.IO.StreamReader(selectedFile)) {
string line;
int lineNum = 0;
int Offset = (int)numericUpDownLinesOfContext.Value;
while ((line = file.ReadLine()) != null) {
lineNum++;
if (line.Contains(PlatypusToSearchFor)) {
// This adds the lines before and after that will provide the desired context
// (N lines from the log file before and after the searched for value)
hashSet.UnionWith(Enumerable.Range(lineNum - Offset, Offset * 2 + 1));
}
}
// Remove any negative numbers, as well as 0, that might have been added
// (0, -1, -2, or -3 are all possibilities, but the first line is #1)
listInts = hashSet.Where(i => i >= 1).ToList();
// They seem to be ordered correctly already, but this is just in case:
listInts = listInts.OrderBy(i => i).ToList();
}