public FqlQueryResultEnumerable(Facebook.JsonArray responseJson, Expression <Func <TRowType, TResult> > select) { ResponseJson = responseJson; Reader = new FacebookDataReader(ResponseJson); if (select != null) { Selector = select.Compile(); } }
/// <summary> /// Performs a generic FQL query against facebook /// </summary> public IEnumerable <T> PerformGenericFql <T>(string fql) where T : class { var items = new List <T>(); fql = FixQuery(fql); var result = Provider.ExecuteFqlQuery(fql); var reader = new FacebookDataReader(result); var td = KnownTypeData.GetTypeData(typeof(T)); while (reader.Read()) { T item = null; var elem = Activator.CreateInstance <T>(); var fetched = false; if (td.IdentityProperty != null) { var idVal = reader[td.IdentityProperty.FqlFieldName]; item = GetObject <T>(idVal, false); fetched = item != null; } if (!fetched) { item = Activator.CreateInstance <T>(); //item.DataContext = this; if (item != null && td.IdentityProperty != null) { StoreObject <T>(item, reader[td.IdentityProperty.FqlFieldName]); } } foreach (var pData in td.Properties) { pData.Value.PropertyInfo.SetValue(item, reader[pData.Value.FqlFieldName], null); } items.Add(item); } return(items); }