2015-05-07 5 views
0

У меня есть 3 строки, это не реальные данные только пример:Создание массива из нескольких строк

string items = "Item 1, Item 2, Item 3"; 

string price = "300, 400, 500"; 

string tax = "30, 50, 60"; 

То, что я пытаюсь сделать, это создать массив так:

[Item 1] => Array([Price] => 300, [Tax] => 30), [Item 2] => Array([Price] => 400, [Tax] => 50), [Item 3] => Array([Price] => 500, [Tax] => 60) 

в проблема в том, что я не знаю, как это сделать в ASP.NET, если бы мне пришлось это делать на PHP, это было бы проблемой.

+0

Почему бы не сделать способ, который вы можете вызвать? Этот метод будет принимать в массиве или списке как параметр, а затем фильтр. Итак, тогда в вашем методе вы просто просматриваете элементы массива данного массива и возвращаете фильтрованный массив для использования в вашем коде. – mwilson

+1

C# массивы не являются ассоциативными. Похоже, что вы хотите словарь (словарей) или, возможно, более идиоматически, список объектов, тип которых является классом «Предмет с именем, ценой и налоговыми свойствами». – Blorgbeard

+0

@Blorgbeard Хорошая добыча. Если массив 3 связан друг с другом, они не должны быть 3 отдельными массивами. Словарь будет более уместным. – mwilson

ответ

5

В C#, вы, вероятно, объявить класс как:

class Item { 
    public string Name { get; set; } 
    public decimal Price { get; set; } 
    public decimal Tax { get; set; } 
} 

И тогда вы могли бы разделить ваши строки в массивы и анализировать их в список Item:

string items = "Item 1, Item 2, Item 3";  
string price = "300, 400, 500"; 
string tax = "30, 50, 60"; 

var names = items.Split(','); 
var prices = price.Split(','); 
var taxes = tax.Split(','); 

var list = new List<Item>(); 

for (int i = 0; i < names.Length; i++) { 
    list.Add(new Item() { 
     Name = names[i].Trim(), 
     Price = decimal.Parse(prices[i]), 
     Tax = decimal.Parse(taxes[i]) 
    }); 
} 

выше является довольно хрупкий: я предполагаю, что каждый список имеет одинаковое количество элементов, и нет никакой обработки для сбоев синтаксического анализа, преобразующих строки в десятичные; Но ты получил идею.

Вот fiddle, который выполняет вышеуказанный код.

+0

Если бы вы могли использовать цикл 'for', то он был бы чище? +1 – naveen

Смежные вопросы