如何在数据表中将'/'转换为字符串 [英] how to convert '/' to string in datatable

查看:59
本文介绍了如何在数据表中将'/'转换为字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 DataRow dr = dt.NewRow(); 
dr [ id] = i;
dr [ 名称] = 名称 + i.ToString();
dr [ 分支] =分支[brnc.Next( 0 3 )];
dr [ 年龄] = ag.Next( 17 22 );
dr [ SocialMarks] = marks1.Next( 50 100 );
dr [ MathsMarks] = marks2.Next( 50 100 );
dr [ ScienceMarks] = marks3.Next( 50 100 );
dr [ TotalMarks] = dr [ socialmarks]。ToString()+ dr [ MathsMarks]。ToString()+ dr [ ScienceMarks ]的ToString();
dr [ AverageMarks] = / / 这里的totalmarks / 3.0..that转换为字符串
dt.Rows.Add(dr);

解决方案

不要这样做。

请停止依赖字符串。当你这样做:

 dr [  TotalMarks ] = dr [  socialmarks]。ToString()+ dr [  MathsMarks]。ToString()+ dr [  ScienceMarks]。ToString(); 

它执行字符串连接 - 因此,如果社交标记为17,则数学数学为42且科学标记是36,那么总分将变为174236 - 并且除以3将不会产生合理的平均值!如果标记不是整数,情况会变得更糟,因为你最终试图将17.042.036.0除以3,这对任何人都没有意义!



而是以原始格式存储值:整数字段中的整数,双列中的双精度数,DateTime列中的日期等等。这样,存储就会自行解决。

  int  socialMarks = marks1.Next( 50  100 ); 
int mathsMarks = marks2.Next( 50 100 );
int scienceMarks = marks3.Next( 50 100 );
int totalMarks = socialMarks + mathsMarks + scienceMarks;
dr [ SocialMarks] = socialMarks;
dr [ MathsMarks] = mathsMarks;
dr [ ScienceMarks] = scienceMarks;
dr [ TotalMarks] = totalMarks;
dr [ AverageMarks] =( double )totalmarks / 3 0 ;


DataRow dr = dt.NewRow();
dr["id"] = i;
dr["Name"] = "Name" + i.ToString();
dr["Branch"] = Branches[brnc.Next(0, 3)];
dr["Age"] = ag.Next(17, 22);
dr["SocialMarks"] = marks1.Next(50, 100);
dr["MathsMarks"] = marks2.Next(50, 100);
dr["ScienceMarks"] = marks3.Next(50, 100);
dr["TotalMarks"] = dr["socialmarks"].ToString() + dr["MathsMarks"].ToString() + dr["ScienceMarks"].ToString();
dr["AverageMarks"] =//here totalmarks/3.0..that convert to string 
dt.Rows.Add(dr);

解决方案

Don't do that.
Please, stop relying on strings. When you do this:

dr["TotalMarks"] = dr["socialmarks"].ToString() + dr["MathsMarks"].ToString() + dr["ScienceMarks"].ToString();

It performs string concatenation - so if the social marks are 17, the maths maths are 42 and the Science marks are 36, then the total marks will become "174236" - and dividing that by 3 is not going to produce a "reasonable" average! The situation becomes even worse if the marks aren't integers, because you end up trying to divide "17.042.036.0" by three and that makes no sense to anyone!

Instead, store your values in their native format: integers in integer fields, doubles in double columns, dates in DateTime columns, and so forth. That way, the storage all sorts itself out.

int socialMarks = marks1.Next(50, 100);
int mathsMarks = marks2.Next(50, 100);
int scienceMarks = marks3.Next(50, 100);
int totalMarks = socialMarks + mathsMarks + scienceMarks;
dr["SocialMarks"] = socialMarks;
dr["MathsMarks"] = mathsMarks;
dr["ScienceMarks"] = scienceMarks;
dr["TotalMarks"] = totalMarks;
dr["AverageMarks"] = (double) totalmarks / 3.0;


这篇关于如何在数据表中将'/'转换为字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆