/// <summary> /// transforms XML into IList of List /// </summary> /// <param name="responseXml">xml with Twitter response</param> /// <returns>IList of List</returns> public virtual List <T> ProcessResults(string responseXml) { XElement twitterResponse = XElement.Parse(responseXml); List <List> lists = new List <List>(); if (twitterResponse.Name == "lists_list" || twitterResponse.Name == "lists") { IEnumerable <XElement> listElements = twitterResponse.Name == "lists_list" ? twitterResponse.Element("lists").Elements("list") : twitterResponse.Elements("list"); lists = (from list in listElements select List.CreateList(list, twitterResponse)) .ToList(); } else if (twitterResponse.Name == "list") { lists.Add( List.CreateList(twitterResponse, twitterResponse) ); } else if (twitterResponse.Name == "users_list") { lists.Add( new List { Users = (from user in twitterResponse.Element("users").Elements("user") select User.CreateUser(user)) .ToList(), CursorMovement = Cursors.CreateCursors(twitterResponse) }); } else if (twitterResponse.Name == "user") { lists.Add( new List { Users = new List <User> { User.CreateUser(twitterResponse) } }); } else if (twitterResponse.Name == "statuses") { lists.Add( new List { Statuses = (from status in twitterResponse.Elements("status") select Status.CreateStatus(status)) .ToList(), CursorMovement = Cursors.CreateCursors(twitterResponse) }); } lists.ForEach(list => { list.Type = Type; list.Cursor = Cursor; list.ID = ID; if (String.IsNullOrEmpty(list.ListID) && !String.IsNullOrEmpty(ListID)) { list.ListID = ListID; } list.PerPage = PerPage; list.Page = Page; list.ScreenName = ScreenName; list.SinceID = SinceID; }); return(lists.AsEnumerable().OfType <T>().ToList()); }