public Option <String> Get(TaggedValueDefinition taggedValue) { return((from tvc in TaggedValuesCollection from tv in tvc.Cast <dynamic>() let name = tv.Name as String where name.Equals(taggedValue.Name) select tv.Value as String).FirstOption()); }
private IEnumerable <Tuple <String, int> > ValueOccurrences(TaggedValueDefinition tv, IEnumerable <ModelEntity.Element> elements) { return(from e in elements from val in e.Get(tv) let valOrEmpty = val.Equals("") ? "<empty>" : val group e by valOrEmpty into g orderby g.Key select Tuple.Create(g.Key, g.Count())); }
private static IImmutableSet <Option <String> > CollectTaggedValues(ModelEntity entity, TaggedValueDefinition tv, Func <int, Option <ModelEntity.Element> > getElementById) { return(entity.Match <ModelEntity, IImmutableSet <Option <String> > >() .Case <OptionEntity>(o => o.Get(tv) .Select(v => ImmutableHashSet.Create(Options.Some(v))) .GetOrElse(() => o.Problems(getElementById) .SelectMany(p => CollectTaggedValues(p, tv, getElementById)) .ToImmutableHashSet())) .Case <OptionOccurrence>(o => o.Get(tv) .Select(v => ImmutableHashSet.Create(Options.Some(v))) .GetOrElse(() => o.AssociatedProblemOccurrences(getElementById) .SelectMany(p => CollectTaggedValues(p, tv, getElementById)) .ToImmutableHashSet())) .Case <ModelEntity.Element>(e => ImmutableHashSet.Create(e.Get(tv))) .Default(_ => ImmutableHashSet.Create <Option <String> >())); }
public void Set(TaggedValueDefinition tv, String value) { Set(tv.Name, value); }