Я получаю последовательность записей из файла CSV. Я хочу опционально фильтровать эти записи по дате и типу и, возможно, консолидировать записи, соответствующие определенным критериям. При необходимости фильтрация по дате и типу осуществляется с использованием Seq.filter
. Однако я хотел бы дополнительно объединить записи, соответствующие определенным критериям. У меня есть работающая функция, я просто не могу понять, как ее можно применить к полученной последовательности. Я не могу использовать Seq.filter, потому что консолидация работает во всей последовательности не по одному элементу за раз. Я могу решить это с помощью промежуточной переменной, мне просто интересно, был ли изящный идиоматический способ справиться с этим.Условный фильтр в прямом трубопроводе в F #?
В принципе, я хочу знать способ условного применения одной (или более) частей цепи в прямой последовательности труб.
Это то, что я хочу в псевдокоде (options
имеет параметры командной строки):
let x =
getRecords options.filePath
|> Seq.filter (fun r -> if options.Date.HasValue then
r.Date.Date = options.Date.Value.Date else true)
|> Seq.filter (fun r -> if not(String.IsNullOrEmpty(options.Type)) then
r.Type = options.Type else true)
if options.ConsolidateRecords then
|> consolidateRecords
Мне это нравится. Так что ничего не делать, когда 'options.ConsolidateRecords' false, тогда предложение else просто вернет' x'? Или у вас было что-то еще? – User
Вы хотите сделать снимок экрана своего 7777 баллов, прежде чем я это сделаю? Я чувствую себя неплохо, выставляя его lol – User
@User Либо верните x, либо продолжите обработку, в зависимости от того, что вы в противном случае сделали бы. – mydogisbox