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
2618 views
GDNet Slim
2024 views
Activity streams
1694 views
V5: User accounts and profiles
2061 views
V5: What I've been working on recently
2441 views
Service process account install gotcha
1735 views
V5: Fun with MSBuild
2274 views
V5: Continuous Integration and Deployment
1764 views
V5 Guts: Text Sanitizer
1820 views
Wheeee
1533 views
Advertisement