C# 索引超出范围。必须为非负数且小于集合的大小

C# 索引超出范围。必须为非负数且小于集合的大小,c#,C#,我正在尝试在for循环中添加一个列表 这是我的代码 我在这里创建了一个属性 public class SampleItem { public int Id { get; set; } public string StringValue { get; set; } } 我想从另一个列表中添加值 List<SampleItem> sampleItem = new List<SampleItem>(); // Error: Index out of r

我正在尝试在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;
 }
List sampleItem=new List();//错误:索引超出范围
for(int i=0;i

有人能纠正我的代码吗。

sampleItem
没有项目时,您引用的是
sampleItem[i]
,因此索引超出了范围。你必须把物品

List sampleItem=new List();
for(int i=0;i
List sampleItem=new List();//错误:索引超出范围
for(int i=0;i
A
列表
必须添加到
中;如果尚未创建索引项,则不能仅将其索引项设置为值。你需要像这样的东西:

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);
}
List sampleItems=new List();
for(int i=0;i
List sampleItem=new List();
foreach(otherListItem中的var项)
{
添加(新的sampleItem{Id=item.Id,StringValue=item.Name});
}

在for循环中,尝试用以下内容替换现有内容:

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

List<SampleItem> sampleItem = (from x in otherListItem select new SampleItem { Id = x.Id, StringValue = x.Name }).ToList();
List sampleItem=(从otherListItem中的x选择新的sampleItem{Id=x.Id,StringValue=x.Name});
执行以下操作:

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

 }
List sampleItem=new List();
for(int i=0;i
由于从未将任何项目添加到sampleItem列表中,因此会出现错误

更好的方法是使用Linq(未经测试)

//使用system.linq

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

这发生在我身上,因为我在Mapper类中映射了两次列。 在我的例子中,我只是简单地分配列表元素。 e、 g


哇!谢谢各位。只有一分钟,我得到了8个回复!这就是为什么我喜欢这个地方!我试过了,效果很好:)
List<SampleItem> sampleItem = (from x in otherListItem select new SampleItem { Id = x.Id, StringValue = x.Name }).ToList();
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});

 }
var sampleItem =  otherListItem.Select(i => new SampleItem { Id= i.Id, StringValue = i.Name}).ToList();
otherListItem.ToList().Foreach(item=>{
  sampleItem.Add(new sampleItem{
});
itemList item;
ProductList product;
item.name=product.name;
item.price=product.price;