我正在开发一个需要使用 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中给出的答案的可能解决方案时遇到了问题。
感谢您的时间!