示例#1
0
 public FqlQueryResultEnumerable(Facebook.JsonArray responseJson, Expression <Func <TRowType, TResult> > select)
 {
     ResponseJson = responseJson;
     Reader       = new FacebookDataReader(ResponseJson);
     if (select != null)
     {
         Selector = select.Compile();
     }
 }
示例#2
0
        /// <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);
        }