帮忙看一下,排序的
{ if (!IsPostBack) { IsLogin(); ViewState["SortOrder"] = "ContactNum"; ViewState["OrderDire"] = "ascending"; GvDataBind(); } } private void GvDataBind() { int year = Convert.ToInt32(Request.QueryString["ddlYear"]); var contracts = from c in db.B_Contract_Out join h in db.B_Hospital on c.HospitalID equals h.ID into ch where c.C4 == "1" from chs in ch.DefaultIfEmpty() join u in db.sys_User on c.PrincipalUser equals u.UserID into cu from cus in cu.DefaultIfEmpty() join p in db.B_PayRecord on c.ID equals p.ContractID into cp from cps in cp.DefaultIfEmpty() where c.AllMoney != Convert.ToDouble(cps.PayMoney) where c.CreateTime.Value.Year == year where c.ContractType == type orderby c.ContractDate descending orderby "c." + ViewState["SortOrder"] + " " + ViewState["OrderDire"] select new { payMoney = GetPayedMoney(c.ID), ArmNames = GetArmariumName(c.ID), .... cus.U_CName, qiankuan = GetQianKuan(Convert.ToDouble(c.AllMoney), c.ID) }; var cons = contracts.ToList().Where(c => GetQianKuan(Convert.ToDouble(c.AllMoney), c.ID) != 0); //去除重复项 var con = cons.Distinct(); GvContract.DataSource = con; GvContract.DataBind(); protected void GvContract_Sorting(object sender, GridViewSortEventArgs e) { string sPage = e.SortExpression; if (ViewState["SortOrder"].ToString() == sPage) { if (ViewState["OrderDire"].ToString() == "descending") ViewState["OrderDire"] = "ascending"; else ViewState["OrderDire"] = "descending"; } else { ViewState["SortOrder"] = e.SortExpression; } GvDataBind(); } orderby c.ContractDate descending ,GetPropertyValue(c,ViewState["SortOrder"].ToString()) ascending,GetPropertyValue(c,ViewState["OrderDire"].ToString()) ascending private static object GetPropertyValue(object obj, string property) { System.Reflection.PropertyInfo propertyInfo=obj.GetType().GetProperty(property); return propertyInfo.GetValue(obj, null); }
------解决方案--------------------
不是直接用 linq orderby
改用 lambda 的:
contracts.Orderby("...") 当然你还要下 Dynamic.cs
[解决办法]
http://blog.csdn.net/q107770540/article/details/6133484
[解决办法]
再.ToString()下。
[解决办法]
不是吧,写成 这么复杂, 难道 没有建关系吗?
或者 能不能直接执行sql语句啊
[解决办法]
看下是不是 查询语句中哪个缺少空格
[解决办法]
order by 之间要有空格
[解决办法]
LINQ 对多表查询不是很给力
建议还是用SQL 或者 那个LINQ的升级版 叫什么e什么的······
[解决办法]