Linq下的数据存储问题
不多所,看注释。不注意这些技巧,可能你的数据保存无效。
var cx_xscj = from aa in sjklj.xgk_xscj
select aa;//获取所有(要保存)记录,不一定是全部记录,然后进行存储,查询语句放到循环之外
FpSpread1.OpenExcel(Server.MapPath("~/exceldr/") + wjm, FarPoint.Excel.ExcelOpenFlags.DataOnly);
int i = 1;
foreach (var kk in cx_xscj)//在excel中计算数据,填入到fpread中,从fpread中读取数据存入数据库
{
//获取学号,姓名,班级定位
string xh = this.FpSpread1.ActiveSheetView.Cells[i, 0].Text.Trim();
string xm = this.FpSpread1.ActiveSheetView.Cells[i, 1].Text.Trim();
string bj = this.FpSpread1.ActiveSheetView.Cells[i, 2].Text.Trim();
string strhx = this.FpSpread1.ActiveSheetView.Cells[i, 13].Text.Trim();//化学等级
string strsw = this.FpSpread1.ActiveSheetView.Cells[i, 14].Text.Trim();//生物等级
string strzz = this.FpSpread1.ActiveSheetView.Cells[i, 15].Text.Trim();//政治等级
string strdl = this.FpSpread1.ActiveSheetView.Cells[i, 16].Text.Trim();//地理等级
/*如果还要根据每一条记录,再去查询,必然浪费大量时间
string gx_ffdj = "update xgk_xscj set hxdj=@hxdj,swdj=@swdj,zzdj=@zzdj,dldj=@dldj where xh=@xh and xm=@xm and bj=@bj";
SqlParameter sqlcs1 = new SqlParameter("@hxdj", strhx);
SqlParameter sqlcs2 = new SqlParameter("@swdj", strsw);
SqlParameter sqlcs3 = new SqlParameter("@zzdj", strzz);
SqlParameter sqlcs4 = new SqlParameter("@dldj", strdl);
SqlParameter sqlcs5 = new SqlParameter("@xh", xh);
SqlParameter sqlcs6 = new SqlParameter("@xm", xm);
SqlParameter sqlcs7 = new SqlParameter("@bj", bj);
SqlParameter[] sqlcsch = new SqlParameter[] { sqlcs1, sqlcs2, sqlcs3, sqlcs4, sqlcs5, sqlcs6, sqlcs7 };
gj.sqltjscgx(conn, gx_ffdj, sqlcsch);//更新赋分等级
*/
//var kk= cx_xscj.Where(aa => aa.xh == xh && aa.xm == xm && aa.bj == bj).First();这种查询方式不是最快,最好是记录从上到下指针指到这里,不要再次查询
kk.hxdj = strhx;
kk.swdj = strsw;
kk.zzdj = strzz;
kk.dldj = strdl;
i++;
}
sjklj.SaveChanges();//循环外保存。有多个并列循环,在每个循环外保存一次