コード例 #1
0
 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());
 }
コード例 #2
0
 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()));
 }
コード例 #3
0
 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> >()));
 }
コード例 #4
0
 public void Set(TaggedValueDefinition tv, String value)
 {
     Set(tv.Name, value);
 }