0

我正在开发一个需要使用 LINQ 检索数据的 SharePoint webpart。我需要将结果放在 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. */

这是从列表“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"

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

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

ps 显然,如果 List 不是按照下面的方式,List<Object>,而是这样,List<String>,结果是正确的。


更新

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

  1. 重复列表<T>.Add(T item) 项
  2. List<t> 集合中的选择方法

但是我在实施链接#1中给出的答案的可能解决方案时遇到了问题。


感谢您的时间!

4

0 回答 0