c#集合和重新编号不按预期工作

时间:2017-06-21 06:32:26

标签: c#

您好我正在尝试设置简单的测试数据。

我只是想采取一个小的集合,并通过多次添加来使其更大。

在我将它们添加到一起后,我想重新编号属性LineNumber 所以没有重复,它按顺序排列。 1,2,3,4 ....

无论我尝试什么它似乎都不起作用,我无法看到错误。

var sampleTemplateLine = dataContext.TemplateFileLines.ToList();


*//tired this doesnt work either*           
//List<TemplateFileLine> lineRange = new List<TemplateFileLine>();
//lineRange.AddRange(sampleTemplateLine);
//lineRange.AddRange(sampleTemplateLine);
//lineRange.AddRange(sampleTemplateLine);
//lineRange.AddRange(sampleTemplateLine);

var allProducts = sampleTemplateLine
                       .Concat(sampleTemplateLine)
                       .Concat(sampleTemplateLine)
                       .Concat(sampleTemplateLine)
                       .ToList();
int i = 1;
foreach (var item in allProducts)
{
     item.LineNumber = i;
     i++;
}

这似乎不起作用

  //re-number the line number
  var total = allProducts.Count();
  for (int i =0; i < total; i++)
  {
      allProducts[i].LineNumber = i+1;
  }

问题:当我期待1

时,在RETURN 4之下
var itemthing = allProducts.Where(x => x.LineNumber == 17312).ToList();

2 个答案:

答案 0 :(得分:4)

您要多次添加相同的对象。您必须添加新对象或克隆您拥有的对象。

答案 1 :(得分:0)

问题是他们指向同一个对象。因此,如果更改属性,则会更改同一

中的所有指向对象

如果存在,您可以使用Clone方法,否则您可以像question一样创建自己的克隆方法。