从LINQ查询中阻止新值

per*_*ene 2 c# linq

我在列表中有一些数据我想要进行查询.然而,在此期间,其他用户可以添加到此列表,我得到错误的项目作为回报:

var query = from s in selected
            where s.contains("www")
            select s);
Run Code Online (Sandbox Code Playgroud)

然后,用户可以在运行查询之前将项目添加到选定列表,我也会得到这个.我可以阻止这种行为吗?:

selected.add("123www")

foreach (var s in query)
/// gives me 123www
Run Code Online (Sandbox Code Playgroud)

Tho*_*mas 7

var"query"只是为其分配了查询,但是在例如foreach循环中访问查询时首先执行查询本身 - 因此您将获得新添加的数据.

如果你不想这样,你可以使用像"ToList()"这样的扩展方法,其中集合保持不变:

var queryResultList = (from s in selected
             where n.contains("www")
             select s).ToList();
Run Code Online (Sandbox Code Playgroud)

这里ToList()立即迭代集合,您现在可以迭代queryResultList并获得正确的结果,即使新元素到达,输出也保持不变.