Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 22nd, 2012  |  syntax: None  |  size: 2.37 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Get list of related objects whose type is in array of types
  2. public abstract class WebObject : IValidatableObject
  3. {
  4.     public WebObject()
  5.     {
  6.         this.Id = Guid.NewGuid();
  7.         RelatedTags = new List<Tag>();
  8.         RelatedWebObjects = new List<WebObject>();
  9.     }
  10.  
  11.     [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
  12.     public Guid Id { get; set; }
  13.     public virtual ICollection<WebObject> RelatedWebObjects { get; set; }
  14.     public IList<Guid> RelatedWebObjectIds { get; set; }
  15. }
  16.        
  17. public JsonResult GetRelatedWebObjectsByWebObject(Guid id, string relatedWebObjectTypes)
  18. {
  19.     JsonResult result = new JsonResult();
  20.     Guid webSiteId = db.WebObjects.Find(id).WebSiteId;
  21.     string[] relatedTypes = relatedWebObjectTypes.Split(',');
  22.     var resultData = (from w in db.WebObjects
  23.                       where w.Id == id
  24.                       from rw in w.RelatedWebObjects
  25.                       where rw.GetType().Name.Contains(relatedTypes)
  26.                       select rw.Id).ToList();
  27.  
  28.     result.Data = resultData;
  29.     result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
  30.     return result;
  31. }
  32.        
  33. var relatedTypes = new HashSet<string>(relatedWebObjectTypes);
  34. var resultData = (from w in db.WebObjects
  35.                   where w.Id == id
  36.                     &&  relatedTypes.SetEquals
  37.                           (w.RelatedWebObjects.Select(rwo => rwo.GetType().Name))
  38.  
  39.                   select w.RelatedWebObjectIds).ToList();
  40.        
  41. from w in db.WebObjects
  42. where w.Id == id
  43. from rw in w.RelatedWebObjects
  44. where relatedWebObjectTypes.Contains(rw.GetType().Name)
  45. select rw.Id
  46.        
  47. public JsonResult GetRelatedWebObjectsByWebObject(Guid id, string relatedWebObjectTypes)
  48.     {
  49.         JsonResult result = new JsonResult();
  50.         Guid webSiteId = db.WebObjects.Find(id).WebSiteId;
  51.  
  52.         List<string> relatedTypes = new List<string>(relatedWebObjectTypes.Split(','));
  53.         var resultData = (from w in db.WebObjects
  54.                           where w.Id == id
  55.                           from rw in w.RelatedWebObjects
  56.                           select rw).ToList();
  57.  
  58.         result.Data = resultData.Where(w => relatedTypes.Contains(w.GetType().BaseType.Name) == true).Select(w => new { Id = w.Id, Type = w.GetType().BaseType.Name }).ToList();//w.Id).Select(w => w.GetType().BaseType.Name).ToList();
  59.         result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
  60.         return result;
  61.     }