2017-08-24 53 views
1

在我的网络表单上,我有一个令牌框,用户可以在其中选择多个答案,并使用~来编译它们以将它们分开。我正在尝试在此页面上添加分数,并且我需要分割这些值。我试着用这个,它说不能显式地将字符串转换为字符串。比方说,该领域的回答是3~4~5将分隔记录转换为单独的字符串?

我将如何转换,要345的方式,让我来执行计算。

string List1 = threeriskfactors.Text.ToString(); 
string[] Vals1 = List1.Split('~'); 
String name1 = List1[0]; 
String name2 = List1[1]; 

我从一个下拉列表中添加单个值没有问题,但这是困扰我。对于我的其它计算我的代码如下所示:

int a1 = Convert.ToInt32(cancerisabnormalcells.SelectedValue.ToString()); 
int b1 = Convert.ToInt32(cancerissecondcause.SelectedValue.ToString()); 
int d1 = Convert.ToInt32(americancancersociety.SelectedValue.ToString()); 
int final1 = a1 + b1 + d1; 

如何分割令牌箱价值,所以我可以把它添加到这个计算?

回答

1

如果你希望他们的总和那么简单:

int final = List1.Split('~').Select(s => int.Parse(s)).Sum(); 

,以验证每个值,看它是否是在解析之前,可分析,可使用的ListForEach方法:

List1.Split('~').ToList().ForEach(s => { int a =0; int.TryParse(s, out a); final +=a; }); 
+0

终于做.Sum()获得添加结果! – Dhanasekar

+0

@DhanasekarSM这就是当你没有很好地阅读问题时会发生什么。我认为他需要所有数字以后使用它们。但就在你说出来之前,我明白了。 –

+0

谢谢你的工作。我还有一个问题需要跟进。如果用户没有在令牌框中输入任何答案,则会失败。我如何检查空值? –

0
IEnumerable<int> vals1 = list1.Select(e=> Convert.ToInt32(e)); 
int final1=0; 
foreach(int val in vals1) 
{ 
    final1 = final1 + val; 
} 

这应该做到这一点。

0
var total = 0; 

foreach (var item in list1.Split('~')) 
    total += Int32.Parse(item); 

顺便说一句,我不知道如何连接值以获得以波浪号分隔的字符串。但值得注意的是,HTML表单将自动从共享相同名称的HTML表单元素中创建以分号分隔的值列表。

相关问题