private void getOrders()
{
try
{
//headerFileReader is assigned with a CSV file (not shown here).
while (!headerFileReader.EndOfStream)
{
headerRow = headerFileReader.ReadLine();
getOrderItems(headerRow.Substring(0,8))
}
}
}
private void getOrderItems(string ordNum)
{
// lines is an array assigned with a CSV file...not shown here.
var sorted = lines.Skip(1).Select(line =>
new
{
SortKey = (line.Split(delimiter)[1]),
Line = line
})
.OrderBy(x => x.SortKey)
.Where(x => x.SortKey == ordNum);
//Note ordNum is different every time when it is passed.
foreach (var orderItems in sorted) {
//Process each line here.
}
}
Выше мой код. Что я делаю для каждого номера заказа из headerFile, я обрабатываю detailLines. Я хотел бы искать только те строки, которые относятся к порядку nr. Вышеупомянутая логика отлично работает, но она считывает с предложением where для каждого номера заказа, который просто не требуется, а также задерживает процесс.C# linq список с изменением где условия
В основном я хочу, чтобы getOrderItems что-то вроде ниже, но я не могу получить, так как сортировка не может быть передана, но я думаю, что это должно быть возможно ??
private void getOrderItems(string ordNum)
{
// I would like to have sorted uploaded with data elsewhere and I pass it this function and reference it by other means but I am not able to get it.
var newSorted = sorted.Where(x => x.SortKey == docNum);
foreach (var orderItems in newSorted) {
//Process each line here.
}
}
Просьба предложить.
UPDATE: Спасибо за ответы & улучшения, но мой главный вопрос, я не хочу, чтобы создать список каждый раз, когда (как я показал в моем коде). Я хочу создать список в первый раз, а затем только поиск в списке для определенного значения (здесь docNum, как показано). Пожалуйста, предложите.
Что вы имеете в виду * отсортированный не могут быть переданы *? –
Почему бы не использовать 'Where' сначала, а затем' OrderBy'? будет намного более эффективным. –
'.OrderBy (x => x.SortKey)' не имеет никакого смысла, если все ваши элементы имеют одинаковый 'SortKey' (т.е. равный' ordNum'). – Groo