2011-10-07 14 views
5

forループにリストを追加しようとしています。インデックスが範囲外です。負でなければならず、コレクションのサイズより小さい

は、ここで私は

public class SampleItem 
{ 
    public int Id { get; set; } 
    public string StringValue { get; set; } 
} 

が、私は誰かが私のコードをしてください修正することができ、別のリスト

List<SampleItem> sampleItem = new List<SampleItem>(); // Error: Index out of range 
for (int i = 0; i < otherListItem.Count; i++) 
{ 
     sampleItem[i].Id = otherListItem[i].Id; 
     sampleItem[i].StringValue = otherListItem[i].Name; 
} 

から値を追加したい、ここでプロパティを作成した私のコード です。

答えて

5

sampleItemに項目がない場合、sampleItem[i]を参照しているため、インデックスが範囲外です。あなたはAdd()項目...

List<SampleItem> sampleItem = new List<SampleItem>(); 
for (int i = 0; i < otherListItem.Count; i++) 
{ 
    sampleItem.Add(new SampleItem { 
     Id = otherListItem[i].Id, 
     StringValue = otherListItem[i].Name 
    }); 
} 
+0

ワウ!みんなありがとう。わずか1分、私は8応答を得ました!これが私がこの場所を愛する理由です!私はそれを試して、それは魅力のように動作します:) – HardCode

0
List<SampleItem> sampleItem = new List<SampleItem>(); // Error: Index out of range 
for (int i = 0; i < otherListItem.Count; i++) 
{ 
    sampleItem.Add(new sampleItem()); // add this line 
    sampleItem[i].Id = otherListItem[i].Id; 
    sampleItem[i].StringValue = otherListItem[i].Name; 
} 
0

ListAdd EDにしなければなりませんしなければなりません。まだ作成されていない場合は、索引項目を値に設定することはできません。あなたはこのようなものを持っているものを交換してみforループ

あなたに
List<SampleItem> sampleItems = new List<SampleItem>(); 
for (int i = 0; i < otherListItem.Count; i++) 
{ 
    SampleItem si = new SampleItem 
    { 
     Id = otherListItem[i].Id, 
     StringValue = otherListItem[i].Name 
    }; 
    sampleItems.Add(si); 
} 
0
List<SampleItem> sampleItem = new List<SampleItem>(); 
foreach(var item in otherListItem) 
{ 
sampleItem.Add(new SampleItem { Id = item.Id, StringValue = item.Name}); 
} 
0

:あなたのような何かを必要と

SampleItem item; 
item.Id = otherListItem[i].Id; 
item.StringValue = otherListItem[i].StringValue; 
sampleItem.add(item); 
0

使用

List<SampleItem> sampleItem = (from x in otherListItem select new SampleItem { Id = x.Id, StringValue = x.Name }).ToList(); 
0

は、次の操作を行います

List<SampleItem> sampleItem = new List<SampleItem>(); 
for (int i = 0; i < otherListItem.Count; i++) 
{ 
     sampleItem.Add(new SampleItem {Id= otherListItem[i].Id, StringValue=otherListItem[i].Name}); 

} 
0

サンプルアイテムをsampleItemリストに追加しないので、エラーが発生します。これを行うには良い方法は、(未テスト)のLINQを使用することになり

var sampleItem = otherListItem.Select(i => new SampleItem { Id= i.Id, StringValue = i.Name}).ToList(); 
0

// System.Linqのを使用しました。

otherListItem.ToList().Foreach(item=>{ 
    sampleItem.Add(new sampleItem{ 
}); 
0

私はMapperクラスで2回カラムをマッピングしていたので、それは私に起こりました。 私の場合、私は単純にリスト要素を割り当てていました。例:

itemList item; 
ProductList product; 
item.name=product.name; 
item.price=product.price; 
関連する問題

 関連する問題