Если предположить, что rdict
- это Dictionary<int*(bool*bool), _>
, то для получения ResizeArray<int>
я предлагаю:
let reclist =
(ResizeArray<_>(), rdict.Keys)
||> Seq.fold(fun list (id,_) -> list.Add id; list)
Кроме того, Dictionary<int*(bool*bool), _>
кажется мне странным.Почему не Dictionary<int*bool*bool, _>
?Т.е. зачем вкладывать пару bool
в качестве второго кортежа?Если вы сделаете это изменение, тогда можно будет назвать rdict.Add
следующим образом:
rdict.Add ((x.["PatientID"], true, true), ldiff)
И reclist
будет вместо:
let reclist =
(ResizeArray<_>(), rdict.Keys)
||> Seq.fold(fun list (id,_,_) -> list.Add id; list)
РЕДАКТИРОВАТЬ В своем комментарии вы упомянули о желании создать отдельные ResizeArray
s на основе различных комбинаций двух bool
s в клавише Dictionary
.Вот одна мысль об этом:
let reclistOnlyA, reclistOnlyB, reclistBoth, reclistNeither =
((ResizeArray<_>(), ResizeArray<_>(), ResizeArray<_>(), ResizeArray<_>()), rdict.Keys)
||> Seq.fold(fun (a, b, both, neither as lists) (id, bools) ->
(match bools with
| true, false -> a
| false, true -> b
| true, true -> both
| false, false -> neither).Add id
lists)