- Get list of related objects whose type is in array of types
- public abstract class WebObject : IValidatableObject
- {
- public WebObject()
- {
- this.Id = Guid.NewGuid();
- RelatedTags = new List<Tag>();
- RelatedWebObjects = new List<WebObject>();
- }
- [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
- public Guid Id { get; set; }
- public virtual ICollection<WebObject> RelatedWebObjects { get; set; }
- public IList<Guid> RelatedWebObjectIds { get; set; }
- }
- public JsonResult GetRelatedWebObjectsByWebObject(Guid id, string relatedWebObjectTypes)
- {
- JsonResult result = new JsonResult();
- Guid webSiteId = db.WebObjects.Find(id).WebSiteId;
- string[] relatedTypes = relatedWebObjectTypes.Split(',');
- var resultData = (from w in db.WebObjects
- where w.Id == id
- from rw in w.RelatedWebObjects
- where rw.GetType().Name.Contains(relatedTypes)
- select rw.Id).ToList();
- result.Data = resultData;
- result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
- return result;
- }
- var relatedTypes = new HashSet<string>(relatedWebObjectTypes);
- var resultData = (from w in db.WebObjects
- where w.Id == id
- && relatedTypes.SetEquals
- (w.RelatedWebObjects.Select(rwo => rwo.GetType().Name))
- select w.RelatedWebObjectIds).ToList();
- from w in db.WebObjects
- where w.Id == id
- from rw in w.RelatedWebObjects
- where relatedWebObjectTypes.Contains(rw.GetType().Name)
- select rw.Id
- public JsonResult GetRelatedWebObjectsByWebObject(Guid id, string relatedWebObjectTypes)
- {
- JsonResult result = new JsonResult();
- Guid webSiteId = db.WebObjects.Find(id).WebSiteId;
- List<string> relatedTypes = new List<string>(relatedWebObjectTypes.Split(','));
- var resultData = (from w in db.WebObjects
- where w.Id == id
- from rw in w.RelatedWebObjects
- select rw).ToList();
- 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();
- result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
- return result;
- }