DataSet不支持c#中的System.Nullable exception
public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { RST_DBDataContext db = new RST_DBDataContext(); var d = (from s in db.TblSpareParts select new { s.SPartName, s.SPartCode, s.ModelID, s.SPartLocation, s.SPartActive, s.SPartSalePrice }).ToArray(); CrystalReport1 c = new CrystalReport1(); c.SetDataSource(d); crystalReportViewer1.ReportSource = c; } }
我正在尝试在sql表中生成水晶报告SPartSalePrice因为在c.SetDataSource(d)中可以为空; exception来请解决
在匿名投影中使用null合并或条件运算符来映射null
:
聚结:
var d = (from s in db.TblSpareParts select new { s.SPartName, ..., SPartSalePrice = s.SPartSalePrice ?? 0.0, ... }).ToArray();
条件 (对于空值不是很有用,但对于投影其他值很有用)
SPartSalePrice = s.SPartSalePrice == null ? 0.0 : s.SPartSalePrice,
该字段需要给出一个名称(我保留了原始名称, SPartSalePrice
),并且替换type
( 0.0
)应该与字段的类型匹配。
也许您的一个对象值是Null。 尝试类似的东西
private void Form2_Load(object sender, EventArgs e) { RST_DBDataContext db = new RST_DBDataContext(); var d = (from s in db.TblSpareParts select new { s.SPartName?? DBNull.Value, s.SPartCode?? DBNull.Value, s.ModelID ?? DBNull.Value, s.SPartLocation ?? DBNull.Value, s.SPartActive ?? DBNull.Value, s.SPartSalePrice ?? DBNull.Value, }).ToArray(); CrystalReport1 c = new CrystalReport1(); c.SetDataSource(d); crystalReportViewer1.ReportSource = c; }
试试这个 :
public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { RST_DBDataContext db = new RST_DBDataContext(); var d = (from s in db.TblSpareParts select new { s.SPartName, s.SPartCode, s.ModelID, s.SPartLocation, s.SPartActive, newPartSalePrice = s.SPartSalePrice == null ? 0 : s.SPartSalePrice }).ToArray(); CrystalReport1 c = new CrystalReport1(); c.SetDataSource(d); crystalReportViewer1.ReportSource = c; } }
你应该在选择中检查null
s.SPartSalePrice == null ? 0 : s.SPartSalePrice
如果null为null,则为null,则返回0,否则返回该值并将其赋值给新变量
newPartSalePrice = s.SPartSalePrice == null ? 0 : s.SPartSalePrice
然后iF数据类型是String
SPartSalePrice =s.SPartSalePrice == null ? "" : s.SPartSalePrice;
如果数据为空则显示空白,否则显示数据。
如果数据类型是int则
PartSalePrice = s.SPartSalePrice == null ? 0 : s.SPartSalePrice
如果您只有一个可以为空的属性,请检查您的class级:decimal? ,把它放在十进制。 对于那些在声明中有问号的属性,只需删除问号并执行即可。
上述就是C#学习教程:DataSet不支持c#中的System.Nullable exception分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1009055.html