Добавить строку в массив, только если доступны данные - PullRequest
3 голосов
/ 13 сентября 2011

У меня есть код, который строит массив строк, используя данные из формы:

                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 голосов
/ 13 сентября 2011
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();
0 голосов
/ 13 сентября 2011

Я разговариваю по телефону, поэтому, пожалуйста, простите пример грамматики / орфографии / кода, если он не работает как есть ...

Но общая идея такова:

Почему бы не перебрать коллекцию этих списков 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.Создание List <> и Foreach не является самым эффективным, но это избавляет от уродливых массивных операторов if.

0 голосов
/ 13 сентября 2011

Вы можете сделать следующее:

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();

Легко!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...