Activity streams

Published May 05, 2010
Advertisement
Today's chocolate-chunk-o'-LINQ:

        public ActivityLogEntry[] GetActivitiesFiltered(DateTime? startTime, DateTime? endTime, Uri[] actors, Uri[] actorTypes, Uri[] objects, Uri[] objectTypes, Uri[] verbs, int? maxToFetch)        {            using(var context = new ActivityEntities())            {                var entries = context.Activities.AsQueryable();                if (startTime.HasValue)                    entries = entries.Where(act => act.timestamp >= startTime.Value);                if (endTime.HasValue)                    entries = entries.Where(act => act.timestamp <= endTime.Value);                if (actors != null)                    entries = actors.Length == 1 ? entries.Where(ent => ent.actorUri == actors.First().ToString())                        : entries.Join(actors, ent => ent.actorUri, act => act.ToString(), (ent, act) => ent);                if (actorTypes != null)                    entries = actorTypes.Length == 1 ? entries.Where(ent => ent.actorType == actorTypes.First().ToString())                        : entries.Join(actorTypes, ent => ent.actorType, act => act.ToString(), (ent, act) => ent);                if (objects != null)                    entries = objects.Length == 1 ? entries.Where(ent => ent.objectUri == objects.First().ToString())                        : entries.Join(objects, ent => ent.objectUri, act => act.ToString(), (ent, act) => ent);                if (objectTypes != null)                    entries = objectTypes.Length == 1 ? entries.Where(ent => ent.objectType == objectTypes.First().ToString())                        : entries.Join(objectTypes, ent => ent.objectType, act => act.ToString(), (ent, act) => ent);                if (verbs != null)                    entries =                         entries.Where(                            act => act.ActivityVerbs.Join(verbs, v => v.verb, w => w.ToString(), (v, w) => w).Any());                if (maxToFetch.HasValue)                    entries = entries.Take(maxToFetch.Value);                return entries.Select(MakeFromEntity).ToArray();            }        }
Next Entry GDNet Slim
0 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement