读书人

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

发布时间: 2013-09-05 16:02:07 作者: rapoo

如何设置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

读书人网 >asp.net

热点推荐