Exemplo n.º 1
0
        /// <summary>
        /// 将实体类容器转换为对象列表
        /// <example>
        /// <code>
        /// <![CDATA[
        /// OQL q=OQL.From(entity1)
        ///          .Join(entity2).On(entity1.PK,entity2.FK)
        ///          .Select(entity1.Field1,entity2.Field2)
        ///       .End;
        /// EntityContainer ec=new EntityContainer(q);
        /// var list=ec.ToObjectList( e =>
        ///          {
        ///             return new {
        ///                          Property1=e.GetItemValue<int>(0),
        ///                          Property2=e.GetItemValue<string>(1)
        ///                        };
        ///          });
        ///
        /// foreache(var item in list)
        /// {
        ///     Console.WriteLine("Property1={0},Property2={1}",item.Property1,item.Property2);
        /// }
        /// ]]>
        /// </code>
        /// </example>
        /// </summary>
        /// <typeparam name="TResult">结果的列表元素类型</typeparam>
        /// <param name="fun">容器结果委托函数</param>
        /// <returns>对象列表</returns>
        public IList <TResult> ToObjectList <TResult>(ECResultFunc <TResult> fun) where TResult : class
        {
            if (this.Values == null)
            {
                this.Execute();
            }
            List <TResult> resultList = new List <TResult>();

            if (this.Values != null && this.fieldNames != null)
            {
                foreach (object[] itemValues in this.Values)
                {
                    this.currValue = itemValues;
                    TResult t = fun(this);
                    resultList.Add(t);
                }
                return(resultList);
            }
            else
            {
                throw new Exception("EntityContainer 错误,执行查询没有返回任何行。");
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 直接返回实体类列表查询结果
        /// <example>
        /// <code>
        /// <![CDATA[
        /// var list= OQL.From(entity1)
        ///          .Join(entity2).On(entity1.PK,entity2.FK)
        ///          .Select(entity1.Field1,entity2.Field2)
        ///       .End
        ///       .ToObjectList( e =>
        ///          {
        ///             return new MyViewModel{
        ///                          Property1=e.GetItemValue<int>(0),
        ///                          Property2=e.GetItemValue<string>(1)
        ///                        };
        ///          });
        ///
        /// foreache(MyViewModel item in list)
        /// {
        ///     Console.WriteLine("Property1={0},Property2={1}",item.Property1,item.Property2);
        /// }
        /// ]]>
        /// </code>
        /// </example>
        /// </summary>
        /// <param name="q">OQL对象</param>
        /// <param name="ecFun">结果对象映射委托</param>
        /// <typeparam name="TResult">结果元素类型</typeparam>
        /// <returns>实体类列表</returns>
        public static IList <TResult> ToObjectList <TResult>(this OQL q, ECResultFunc <TResult> ecFun) where TResult : class
        {
            EntityContainer ec = new EntityContainer(q);

            return(ec.ToObjectList <TResult>(ecFun));
        }