以下是原Sql语句:
dglist = GetExamInfo(); //获取试题信息
for (int i = 0; i < dglist.Count; i++)
{
//其中 PExamName 、PState 是 PerScore 表中的字段
sqlstr += " max(case when PExamName='" + dglist[i].HExamName + "' then PState else null end)'" + dglist[i].HExamName + "',";
}
if (sqlstr.Length > 0)
sqlstr = sqlstr.Substring(0, sqlstr.Length - 1);
sqlstr = " select PTName '队名', SUM(POkScore+PAdjustScore) '总分',"
+ sqlstr + " from PerScore where PHallID='"
+ Guid.Parse(Session["hid"].ToString())
+ "' group by PTID,PTName order by '总分' desc ";
以下是上面sql语句执行时的语句:(假设dglist有三条记录,分别是“合并利润表”、“利润表试题”、“资金日报表”)
select PTName '队名', SUM(POkScore+PAdjustScore) '总分',
max(case when PExamName='合并利润表' then PState else null end)'合并利润表', max(case when PExamName='利润表试题' then PState else null end)'利润表试题', max(case when PExamName='资金日报表' then PState else null end)'资金日报表',
from PerScore where PHallID='eecb075c-3862-4519-b966-7e9e4f287890' group by PTID,PTName order by '总分' desc
现在我希望把上面这个sql语句转换成linq to sql ,谢谢!
注:红色PerScore表示数据表,咖啡色注明的表示是这张表的字段。
2 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
在LINQ TO SQL里使用行转列倒是没用过,不过,你可以在数据库服务器定义一个视图,然后再建立模型对象。
此外,也可以通过DATACONTEXT来执行一段SQL语句,获取执行后的数据,只是此时不再是MODEL,需要你自己再处理。
- 2 回答
- 0 关注
- 593 浏览
添加回答
举报
0/150
提交
取消