SQL是万能的,Linq虽然方便快捷,但不是万能的,在有的时候,还是需要借助SQL解决问题,在某些方面,例如动态字段的使用上,用sql往往得心应手,虽然linqtodataset也是不错的解决方案。
下面遇到的一些问题,应该如此解决:
if(this.FpSpread1.ActiveSheetView.Cells[j, 4].Text.Trim() == string.Empty) //用三元表达式出错
{
yw = null;
}
else
{
yw = double.Parse(this.FpSpread1.ActiveSheetView.Cells[j, 4].Text.Trim());
}
2.
cx_qrzb = (from aa in sjklj.xgk_xscj
where aa.nd == DateTime.Now.Year && aa.zz.HasValue && aa.zz > 0 && (aa.zz <= Y2 && aa.zz >= Y1) && !aa.zzff.HasValue
select aa.zz);
这里zzff是可空double类型,如果用数据表中的字符类型字段处理,都不容易解决。
自编SQL函数解决linq不易解决的问题,特别是多个循环语句下的数据保存问题。
string gx_zzff = "update xgk_xscj set zzff=@zzff,dj=@dj where zz=@fs and nd=@nd";
SqlParameter sqlcs1 = new SqlParameter("@zzff", T);
SqlParameter sqlcs2 = new SqlParameter("@fs", fs);
SqlParameter sqlcs3 = new SqlParameter("@nd", DateTime.Now.Year);
SqlParameter sqlcs4 = new SqlParameter("@dj", "D");
SqlParameter[] sqlcsch = new SqlParameter[] { sqlcs1, sqlcs2, sqlcs3, sqlcs4 };
gj.sqltjscgx(conn, gx_zzff, sqlcsch);