C#:在向List添加项目时复制对象

时间:2013-07-03 07:34:40

标签: c# list sharepoint sharepoint-2010 web-parts

我正在开发一个SharePoint webpart,它需要使用LINQ检索数据。我需要将结果放在List类型的对象上,以便我可以自由地使用结果。

但问题是,对于声明的C#List-type,其上有一个自定义对象;对于添加到列表中的每个新项目,先前添加的对象已更改为刚刚进入列表的对象的最新值。

以下是我写的代码示例:

List<ItemEntity> LocalItemList = new List<ItemEntity>();

var linqQuery = from item in LinqList;
                where item.Expire > DateTime.Now
                select new
                {
                    item.Title,
                    item.Message
                }

foreach (var retrievedItem in linqQuery){
    //this is an entity class object, "tempItemEntity".
    ItemEntity tempItemEntity = new ItemEntity();

    tempItemEntity.Author = retrievedItem.Title;
    tempItemEntity.Message = retrievedItem.Message;

    LocalItemList.Add(tempItemEntity);
}

/* From here on is my test printing loop to see the returned result. The results are shown below. */

这是从List打印的结果,“LocalItemList”:

预期结果

这些是我期待的结果。

LocalItemList[0] = "Title1" + "Message1"
LocalItemList[1] = "Title2" + "Message2"
LocalItemList[2] = "Title3" + "Message3"

返回结果

相反,这些是返回的结果。

LocalItemList[0] = "Title3" + "Message3"
LocalItemList[1] = "Title3" + "Message3"
LocalItemList[2] = "Title3" + "Message3"

在我看来,对于添加到列表中的每个新项目,先前的索引都会更新并更改为最新添加的项目。为什么会这样?

如果您正在谈论对象引用不正确,请纠正我。

P.S。显然,如果列表未按以下方式投放,List<Object>,而是List<String>,则结果是正确的。


更新

我在论坛上搜索并发现以下与我有类似问题的问题:

  1. Duplicate List<T>.Add(T item) Items
  2. Select method in List<t> Collection
  3. 但是我在链接#1中给出的答案中实现可能的解决方案时遇到了问题。


    感谢您的时间!

0 个答案:

没有答案