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.cs 268 25 ZWW.BLL
asp.net   IQueryable

解决方案 »

  1.   

    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
      

  2.   


    因为我的返回类型是根据switch来确定的!所以这个<MyClass>就不知道怎么写了!!!有没有类似泛型那样子的做法???