コード例 #1
0
        protected void EnsureData()
        {
            if (Statements == null)
            {
                Statements = Source.SelectList(new Statement(Uid, null, null), true);
            }

            PropertiesHash = new Dictionary <Entity, PropertyView>();
            var groups = new Dictionary <Entity, IList <Resource> >();

            // collect and group-by-property
            foreach (var st in Statements)
            {
                if (!groups.ContainsKey(st.Predicate))
                {
                    groups[st.Predicate] = new List <Resource>();
                }
                if (!groups[st.Predicate].Contains(st.Object))
                {
                    groups[st.Predicate].Add(st.Object);
                }
            }

            foreach (var group in groups)
            {
                var valueList    = new List <object>();
                var refList      = new List <ResourceView>();
                var propertyView = new ResourceView(group.Key, Source);
                foreach (var res in group.Value)
                {
                    if (res is Literal)
                    {
                        valueList.Add(GetObject((Literal)res));
                    }
                    else if (res is Entity)
                    {
                        refList.Add(new ResourceView((Entity)res, Source));
                    }
                }
                var prop = new PropertyView(propertyView, valueList, refList);
                PropertiesHash[propertyView.Uid] = prop;
            }
        }
コード例 #2
0
ファイル: ResourceView.cs プロジェクト: Mariamfelicia/nreco
        protected void EnsureData()
        {
            if (Statements == null)
                Statements = Source.SelectList(new Statement(Uid, null, null), true);

            PropertiesHash = new Dictionary<Entity, PropertyView>();
            var groups = new Dictionary<Entity, IList<Resource>>();

            // collect and group-by-property
            foreach (var st in Statements) {
                if (!groups.ContainsKey(st.Predicate))
                    groups[st.Predicate] = new List<Resource>();
                if (!groups[st.Predicate].Contains(st.Object))
                    groups[st.Predicate].Add(st.Object);
            }

            foreach (var group in groups) {
                var valueList = new List<object>();
                var refList = new List<ResourceView>();
                var propertyView = new ResourceView(group.Key, Source);
                foreach (var res in group.Value) {
                    if (res is Literal)
                        valueList.Add(GetObject((Literal)res));
                    else if (res is Entity)
                        refList.Add(new ResourceView((Entity)res, Source));
                }
                var prop = new PropertyView(propertyView, valueList, refList);
                PropertiesHash[propertyView.Uid] = prop;
            }
        }