2011-09-12 29 views
0

が、私はリストを得た後、簡単にリストを変更します。 var x = new List<string>(){"a","b","c"}n番目の項目

私は 例の後のすべての項目を変更するにはかなり簡単な方法を探しています:

var x = new List<string>(){"a","b","c"} 
var y = new List<string>(){"d","e","f"} 
x.addAfterFirst(y); 

結果x= "a","d","e","f"

私は知っている 'x.Skip(1)'私の情報を返すことができます。私はそれを設定する必要があります。

+0

一致していない、あなたが提供する結果と予想 "最初の後に追加"。さらに、 'list 'クラスは.NETにはなく、 'List 'のみです。 –

+0

'x'の最後の要素を削除し、最後に' y'を追加することを意味しますか? – briantyler

+0

結果x = "a"、 "b"、 "d"、 "e"、 "f"は "c" –

答えて

5

を削除したい場合は、最初のを取るためにTake Extension Methodを使用することができますnアイテムはxで、y使用Concat Extension Method:あなたが代わりに新しいリストを作成するインプレースxを変更したい場合は

List<string> x = new List<string> { "a", "b", "c" }; 
List<string> y = new List<string> { "d", "e", "f" }; 

int n = 1; 

List<string> result = x.Take(n).Concat(y).ToList(); 
// result == { "a", "d", "e", "f" } 

は、あなたが最初にのn項目の後にすべての項目を削除するためにRemoveRange Methodを使用することができ、かつAddRange Methodyxに追加する:

List<string> x = new List<string> { "a", "b", "c" }; 
List<string> y = new List<string> { "d", "e", "f" }; 

int n = 1; 

x.RemoveRange(n, x.Count - n); 
x.AddRange(y); 
// x == { "a", "d", "e", "f" } 
+0

+1 ...良い使い方をしてください –

1
InsertRangeの

メイクの使用は、あなたが

var x = new list<string>(){"a","b","c"} 
var y = new list<string>(){"d","e","f"} 
x.InsertRange(2,y); 

をタスクんだろう編集

今あなたが要素

var x = new list<string>(){"a","b","c"}; 
int xlength = x.Count() - 1; 
var y = new list<string>(){"d","e","f"}; 
int ylength = y.Count() - 1; 
x.InsertRange(2,y); 
x.RemoveRang(2 + ylength, xlength- 2); 
+0

-1:質問をもう一度読んでください。あなたのコードの結果は 'a、d、e、f、b、c'ですが、彼は' a、d、e、f'を期待しています。 –

+0

@Daniel Hilgarth - ロジックが更新されました –

0

あなたの結果が完全な説明と一致していません

あなたは、既存のコレクションを変更する必要があるか、あなたは新しいコレクションを受け入れることができる

を挿入または交換を希望していますか?

すべての例では、

var result=x.Take(insertIndex).Concat(y).Concat(x.Skip(insertIndex)).ToList(); 

変更コレクション置き換え

var result=x.Take(insertIndex).Concat(y).ToList(); 

新しいコレクションの挿入を交換して次の初期化

var insertIndex=1; 
var x = new List<string>(){"a","b","c"}; 
var y = new List<string>(){"d","e","f"}; 

新しいコレクションを使用

x.RemoveRange(insertIndex,x.Count-insertIndex); 
x.AddRange(y); 

変更コレクションを挿入

x.InsertRange(insertIndex,y); 
0

非LINQの拡張子の道:

int i; 
for (i=0;i < y.Count;i++) 
{ 
    if (i+1 < x.Count) 
     x[i+1] = y[i]; 
    else 
     x.Add(y[i]); 
} 
//If you dont want trailing elements to remain in x 
for (;i < x.Count;i++) 
    x.RemoveAt(i); 
関連する問題