2012-03-29 136 views
3

我有一個int []數組。我需要一個int並將其追加到數組的末尾,而不會影響該數組中其他項的位置。使用C#4和LINQ什麼是最優雅的方式來實現這一目標?C#LINQ追加一個項目到一個數組的末尾

我的代碼:

int[] items = activeList.Split(',').Select(n => Convert.ToInt32(n)).ToArray(); 
int itemToAdd = ddlDisabledTypes.SelectedValue.ToInt(0); 

// Need final list as a string 
string finalList = X 

感謝您的幫助!

+2

你爲什麼不乾脆做一個'finalList = activeList.Append( 「」 + ddlDisabledTypes.SelectedValue)'? – 2012-03-29 15:19:29

+0

'items.Add(itemToAdd);' ??? – Bridge 2012-03-29 15:20:19

+0

items.Add(itemToAdd);不起作用:'系統。Array'不包含'Add'的定義,並且沒有擴展方法'Add'接受'System.Array'類型的第一個參數可以找到(你是否缺少using指令或程序集引用?) – Jared 2012-03-29 15:22:01

回答

8

最簡單的方法是改變你的表情。首先轉換爲List<int>,然後添加元素,然後轉換爲數組。根據您的最後一行

List<int> items = activeList.Split(',').Select(n => Convert.ToInt32(n)).ToList(); 
int itemToAdd = ddlDisabledTypes.SelectedValue.ToInt(0); 
items.Add(itemToAdd); 

// If you want to see it as an actual array you can still use ToArray 
int[] itemsAsArray = items.ToArray(); 

雖然它看起來像你想獲得的所有信息反饋爲string值。如果是這樣,那麼你可以做以下

var builder = new StringBuilder(); 
foreach (var item in items) { 
    if (builder.Length != 0) { 
    builder.Append(","); 
    } 
    builder.Append(item); 
} 
string finalList = builder.ToString(); 

如果總體目標雖然是多了一個項目只是追加到一個字符串的末尾,則它更有效地做到這一點,而不是直接轉換爲int收集和然後回到一個字符串。

int itemToAdd = ddlDisabledTypes.SelectedValue.ToInt(0); 
string finalList = String.IsNullOrEmpty(activeList) 
    ? itemToAdd.ToString() 
    : String.Format("{0},{1}", activeList, itemToAdd); 
+0

最後一項是最好的例子。非常感謝你的幫助! – Jared 2012-03-29 15:33:33

12

嘗試items.Concat(new[] { itemToAdd });

0

爲什麼不直接添加項目作爲string直接?

string finalList = items + "," + itemToAdd; 

int在級聯自動轉換爲string

如果items可以null或空然後更改表達

string finalList = String.IsNullOrEmpty(items) ? 
        itemToAdd.ToString() : items + "," + itemToAdd; 
+1

如果物品是空的,會發生什麼情況? – 2012-03-29 15:23:17

+0

我不知道OP的邏輯細節。因爲他必須檢查這個案子,如果項目可以是空的。 – 2012-03-29 15:27:07

0

我不明白爲什麼你用轉換成轉換成字符串數組的String ..? 這可能是你需要的嗎?

string finalList = activeList + "," + ddlDisabledTypes.SelectedValue; 
1

爲什麼不:

List<int> items = activeList.Split(',').Select(n => Convert.ToInt32(n)).ToList(); 
int itemToAdd = ddlDisabledTypes.SelectedValue.ToInt(0); 
items.Add(itemToAdd); 

編輯:

而接下來,如果你想有一個int數組:

int[] array = items.ToArray(); 
2

你的示例代碼似乎真的令人費解以符合條件

使用

代碼

List<int> items = activeList.Split(',').Select(n => Convert.ToInt32(n)).ToList(); 
items.Add(ddlDisabledTypes.SelectedValue.ToInt(0)); 

string finalList = String.Join(',',items.ToArray()); 

只需操縱串

int itemToAdd = ddlDisabledTypes.SelectedValue.ToInt(0); 
string finalList = String.IsNullOrWhiteSpace(activeList) ? 
              itemToAdd.ToString() : 
              itemToAdd + string.format(",{0}",itemToAdd); 
相關問題