2012-03-29 20 views
3

私は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

を操作してコード

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

を使用していますか? –

+0

'items.Add(itemToAdd); ' ??? – Bridge

+0

items.Add(itemToAdd);動作しません: 'システム。「配列」には「追加」の定義が含まれておらず、「System.Array」タイプの最初の引数を受け入れる拡張メソッド「追加」はありません(使用指示文またはアセンブリ参照がありませんか?) – Jared

答えて

8

最も簡単な方法は、少しずつ式を変更することです。最初にList<int>に変換し、要素を追加して配列に変換します。あなたが戻ってstring値などの情報のすべてを取得したいのようにそれはそうかかわらず、あなたの最後の行に基づいて

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

。もしそうなら、あなたは以下の

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

12

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

0

stringと直接項目を追加するのはなぜですか?

string finalList = items + "," + itemToAdd; 

int自動の連結にstringに変換されます。

あなたは文字列に変換配列に変換された文字列を使用する理由items

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

アイテムが空の場合はどうなりますか? –

+0

OPのロジックの詳細はわかりません。原因がある場合、アイテムが空であれば、このケースをチェックしなければならないでしょう。 –

0

に式を変更し、その後nullまたは空にすることができますかどうかは表示されませんか..? これは必要なものでしょうか?

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

EDIT:

と次のあなたはintの配列にしたい場合:

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

をあなたのコード例では、本当に複雑なようです条件に合わせて

ちょうどあなたが単に `finalList = activeList.Append( "" + ddlDisabledTypes.SelectedValueを)`行わない理由は、文字列

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