首页 新闻 会员 周边

linq中多表连接+多条件查询+分页 我返回 IQueryable<object> list = getSelect(stuContext);这样写不行

0
悬赏园豆:20 [待解决问题]

我这里有一个方法是写linq语句返回 IQueryable<object>的,
IQueryable<object> getSelect(studentsDataContext stuContext)
{
return from u in stuContext.StuInfo
join cs in stuContext.ClassInfo
on u.ClassId equals cs.ClassId

//这里是多条件查询的,我想把这个放到外面
where (string.IsNullOrEmpty(this.name.Text) ? true : u.Name.Contains(this.name.Text.ToString().Trim())
) && (string.IsNullOrEmpty(this.a_ai.Text) ? true : u.Hobby.Contains(this.a_ai.Text.ToString().Trim())
)

               select new
               {
                   编号 = u.StuID,
                   姓名 = u.Name,
                   性别 = u.Sex,
                   爱好 = u.Hobby,
                   年龄 = u.Age,
                   班级 = u.ClassInfo.ClassName,
               };
    }

//比如放在这里如果返回的是 var 或者 IQueryable<StuInfo>
我可以这样写 list.Where(c=>c.年龄 >0)
IQueryable<object> list = getSelect(stuContext);
但是object就拿不到年龄,我盖怎么做

//这是分页的调用方法
this.Label1.Text = pageHelp.GetPageNum(this.GridView1, pagesize, list);

//这是分页的方法
public static string ShowPageNavigate(GridView GridViewName, int PageIndex, int PageSize, int total)
{
//获取跳转的绝对路径
string redirectTo = HttpContext.Current.Request.CurrentExecutionFilePath;

        PageSize = PageSize == 0 ? 5 : PageSize;//默认显示五条数据

        //总页数:总记录数据/显示条数
        int totalpages = Math.Max((total + PageSize - 1) / PageSize, 1);

        //创建stringBuilder添加a标签
        StringBuilder sb = new StringBuilder();

        if (totalpages >= 1)
        {


            if (PageIndex != 1)  //首页
                sb.AppendFormat("<a class='pageLink' href='{0}?pageIndex=1'>首页</a>", redirectTo);
            else
                sb.Append("<span class='pageLink'>首页</span>");

            if (PageIndex > 1)//上一页
                sb.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}'>上一页</a>", redirectTo, PageIndex - 1);
            else
                sb.Append("<span class='pageLink'>上一页</span>");

            int start = (PageIndex - 5) < 1 ? 1 : (PageIndex - 5);//计算起始位置.要求页面上显示10个数字页码.

            int end = start + 9;//计算终止位置.
            if (end > totalpages)
            {
                end = totalpages;
                //重新计算一下Start值.
                start = end - 9 < 1 ? 1 : end - 9;
            }

            //一共最多显示十页 
            for (int i = start; i <= end; i++)
            {
                if (i == PageIndex)
                    sb.AppendFormat("<span class='pageLink'>{0}</span>", i);
                else
                    sb.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}'>{2}</a>", redirectTo, i, i);

            }
            if (PageIndex < totalpages)//下一页
                sb.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}'>下一页</a>", redirectTo, PageIndex + 1);
            else
                sb.Append("<span class='pageLink'>下一页</span>");

            if (PageIndex != totalpages)  //尾页
                sb.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}'>尾页</a>", redirectTo, totalpages);
            else
                sb.Append("<span class='pageLink'>尾页</span>");

            //统计
            sb.AppendFormat("<span class='pageLink'>第{0}页 / 共{1}页</span>", PageIndex, totalpages);

        }
        return sb.ToString();
    }
说不再见的主页 说不再见 | 初学一级 | 园豆:184
提问于:2018-12-06 21:46
< >
分享
所有回答(1)
0

还是别用object 我觉得还是自己定义一个要输出的类比较好

你小子嚣张呀 | 园豆:630 (小虾三级) | 2018-12-08 11:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册