首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

怎么设置IQueryable的类型为函数返回的类型?

2013-09-05 
如何设置IQueryable的类型为函数返回的类型??private IQueryable GetArticleQueryByColumnID(long columnI

如何设置IQueryable的类型为函数返回的类型??


private IQueryable GetArticleQueryByColumnID(long columnID)
        {
            string sqlStr = "";
            if (columnID > 0)
            {
                sqlStr = string.Format(ExSql, string.Format(" and COLUMN_ID={0} ", columnID));
            }
            else
            {
                sqlStr = string.Format(ExSql, "");
            }
            switch (GetColumn(columnID).REFER_TYPE)
            {
                case 0:
                    return _db.ExecuteQuery<V_ARTICLE_SHOW_ALL>(sqlStr).AsQueryable();
                case 1:
                    return _db.ExecuteQuery<V_ARTICLE_SHOW_REFER>(sqlStr).AsQueryable();
                case 2:
                    return _db.ExecuteQuery<V_ARTICLE_SHOW_REFER>(sqlStr).AsQueryable();
                case 3:
                    return _db.ExecuteQuery<V_ARTICLE_SHOW_DUTYTREE>(sqlStr).AsQueryable();
                default:
                    return _db.ExecuteQuery<V_ARTICLE_SHOW_REFER_ALL>(sqlStr).AsQueryable();
            }


        }


因为没有办法判断具体返回的集合类型
调用 GetArticleQueryByColumnID(columnID).Count();时报错:

错误7“System.Linq.IQueryable”不包含“Count”的定义,并且找不到可接受类型为“System.Linq.IQueryable”的第一个参数的扩展方法“Count”(是否缺少 using 指令或程序集引用?)D:\newcode2013\DWGK\DWGK\ZWW.BLL\Special\SpecialDAL.cs26825ZWW.BLL
asp.net??? IQueryable
[解决办法]
private IQueryable<MyClass> GetArticleQueryByColumnID(long columnID)
        {
            string sqlStr = "";
            if (columnID > 0)
            {
                sqlStr = string.Format(ExSql, string.Format(" and COLUMN_ID={0} ", columnID));
            }
            else
            {
                sqlStr = string.Format(ExSql, "");
            }
            switch (GetColumn(columnID).REFER_TYPE)
            {
                case 0:
                    return _db.ExecuteQuery<V_ARTICLE_SHOW_ALL>(sqlStr).AsQueryable().Select(x=>new MyClass{});
                case 1:
                    return _db.ExecuteQuery<V_ARTICLE_SHOW_REFER>(sqlStr).AsQueryable().Select(x=>new MyClass{});


                case 2:
                    return _db.ExecuteQuery<V_ARTICLE_SHOW_REFER>(sqlStr).AsQueryable().Select(x=>new MyClass{});
                case 3:
                    return _db.ExecuteQuery<V_ARTICLE_SHOW_DUTYTREE>(sqlStr).AsQueryable().Select(x=>new MyClass{});
                default:
                    return _db.ExecuteQuery<V_ARTICLE_SHOW_REFER_ALL>(sqlStr).AsQueryable().Select(x=>new MyClass{});
            }
        }



或者直接返回Dynamic

热点排行