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(); } }
Today's chocolate-chunk-o'-LINQ:
Previous Entry
V5: User accounts and profiles
Next Entry
GDNet Slim
Advertisement
Latest Entries
members.gamedev.net
2587 views
GDNet Slim
1984 views
Activity streams
1651 views
V5: User accounts and profiles
2017 views
V5: What I've been working on recently
2407 views
Service process account install gotcha
1681 views
V5: Fun with MSBuild
2239 views
V5: Continuous Integration and Deployment
1716 views
V5 Guts: Text Sanitizer
1786 views
Wheeee
1503 views
Advertisement