在我的原始帖子的后续问题中Using Foreach on iQueryable List find value if in 2nd List我无法找到一个解决方案,当我使用 foreach 循环进行更改时,它会更新本地列表。浏览我的 Visual Studio 调试器,如果在 LookForMe 列表中找到当前项目,它会更新 item.LinkURL 值。但是,当将 Results.ToList() 返回到我的调用方法时,此更新不在返回的集合中。在返回之前如何将它们保存到结果列表中?没有看到任何智能感知,比如 Results.Update() 或 Results.Save() 可以工作。
foreach (var item in Results)
{
if (LookForME.Any(fs => item.LinkUrl.Contains(fs)))
{
item.LinkUrl = ServerPath + "/" + item.LinkUrl;
// works great until its time to return the updated Results list
}
// something here to update results with new value?
}
return Results.ToList();
最佳答案
您需要使用ToList
首先迭代,然后修改内存中列表并返回该列表。
当前您的Result
是IQueryable
(更像是查询),尚未执行。
你可以这样做:
var newList = Result.ToList(); //get a in-memory list
foreach (var item in newList) //modify in-memory list
{
if (LookForME.Any(fs => item.LinkUrl.Contains(fs)))
{
item.LinkUrl = ServerPath + "/" + item.LinkUrl;
// works great until its time to return the updated Results list
}
// something here to update results with new value?
}
return newList;
关于c# - 返回方法调用之前更新本地 iqueryable 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23834346/