c# - 返回方法调用之前更新本地 iqueryable 列表

标签 c# linq collections foreach

在我的原始帖子的后续问题中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首先迭代,然后修改内存中列表并返回该列表。

当前您的ResultIQueryable(更像是查询),尚未执行。

你可以这样做:

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/

相关文章:

java - 使用 Collector.toMap 在 map 中收集

c# - 按匹配关键字的数量对列表/数组进行分组或排序

scala - 对集合执行多次操作后返回相同的集合类型

c# - 如何处理 ComboBox 的 SelectedIndexChanged 事件?

C# Lambda OrderByDescending 和 Sum

c# - Linq - 里面包括

C# Generic ToString Join if Array or IEnumerable

java - Java 中数组列表中的数组列表

c# - 在 if block 中将 short 转换为 int

c# - SQL Server 中哪种方法更快?返回通过 DataTable 使用的 XML 数据或原始数据?