仅在数据可用时才将字符串添加到数组

时间:2011-09-13 18:48:12

标签: c# arrays string

我有一些代码使用表单中的数据构建字符串数组:

                string[] var4 = new string[] { 
                    "Issue=" + DropDownListIssue.SelectedItem.ToString(),
                    "SubIssue=" + DropDownListSubIssue.SelectedItem.ToString(),
                    "Layout=" + DropDownListLayout.SelectedItem.ToString()
                };

即使没有数据,此代码也会将所有元素添加到数组中。例如,假设Issue的值是“Apple”,但其他两个下拉列表是空白的。得到的var4将是:

"Issue=Apple"
"SubIssue="
"Layout="

在这种情况下,我希望var4为:

"Issue=Apple"

SubIssue和Layout未添加到数组中,因为它们留空。但是,如果填入它们,则应将它们添加到阵列中。例如:

"Issue=Apple"
"SubIssue=Dog"
"Layout=Square"

如何写这个只在有值的时候添加字符串?

3 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

string[] possibleNulllVar4 = new string[] { 
    string.IsNullOrEmpty(DropDownListIssue.SelectedItem.ToString()) ? "Issue=" + DropDownListIssue.SelectedItem.ToString() : null,
    string.IsNullOrEmpty(DropDownListSubIssue.SelectedItem.ToString()) ? "SubIssue=" + DropDownListSubIssue.SelectedItem.ToString() : null,
    string.IsNullOrEmpty(DropDownListLayout.SelectedItem.ToString()) ? "Layout=" + DropDownListLayout.SelectedItem.ToString() : null
};

编辑:啊,如果您不想要任何空节点,请在以后执行以下操作:

var var4 = possibleNulllVar4.Where(x => null != x).ToArray();

容易!

答案 1 :(得分:-1)

List<string> list = new List<string>();
var str = DropDownListIssue.SelectedItem.ToString();
if (!string.IsNullOrEmpty(str))
    list.Add("Issue=" + str);
str = DropDownListSubIssue.SelectedItem.ToString();
if (!string.IsNullOrEmpty(str))
    list.Add("SubIssue=" + str);
str = DropDownListLayout.SelectedItem.ToString();
if (!string.IsNullOrEmpty(str))
    list.Add("Layout=" + str);

string[] var4 = list.ToArray();

答案 2 :(得分:-1)

我正在打电话所以请原谅一些语法/拼写/代码示例,如果它不能正常工作......

但通用的想法是:

为什么不遍历那些DropDown列表的集合,如果有一个选定的值,将值添加到传入的数组(或使用Arraylist.ToArray()或List.ToArray())所以你不能需要重新开始。每个下拉列表都可以有一个参数/命令,因此你知道你正在处理哪一个:

与(PSEUDO)相似

List<DropDowns> dropDowns = ...//Get your dropdowns into the list
foreach(dd in dropDowns)
{
 if(dd.SelectedItem != null && d.SelectedIndex != -1 )    
   YourStringArray.Add(dd.CommandArgument  + "=" + dd.SelectedValue);
}

抱歉 - 在电话上,它可能不会“编译”,但这就是我标记为id pseduo的原因。做一个列表&lt;&gt;并且Foreach不是最有效的,但它远离丑陋的大规模if语句。