【问题标题】:Updating local iqueryable list before returning to method call在返回方法调用之前更新本地 iqueryable 列表
【发布时间】:2014-05-23 16:35:07
【问题描述】:

在我原来的帖子Using Foreach on iQueryable List find value if in 2nd List 的后续问题中,我找不到解决方案,当我使用 foreach 循环进行更改时,它会更新本地列表。如果在 LookForMe 列表中找到当前项目,则遍历我的 Visual Studio 调试器会更新 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();

【问题讨论】:

    标签: c# linq collections foreach


    【解决方案1】:

    您需要先迭代使用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;  
    

    【讨论】:

    • 非常有意义。延迟执行又让我失望了?> :-) 非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多