c# – 访问IEnumerable清除内容
发布时间:2020-12-15 23:23:08 所属栏目:百科 来源:网络整理
导读:我有一个返回IEnumerable的数据库(Cassandra)查询.试图找出为什么没有返回数据(当我知道数据库中的数据时)我发现了一个奇怪的问题. 该查询实际上返回数据,25个条目.我用Data.Count()检查了这个;但后来在代码中,它是空的.我意识到计数方法无法清除数据. 经过
我有一个返回IEnumerable的数据库(Cassandra)查询.试图找出为什么没有返回数据(当我知道数据库中的数据时)我发现了一个奇怪的问题.
该查询实际上返回数据,25个条目.我用Data.Count()检查了这个;但后来在代码中,它是空的.我意识到计数方法无法清除数据. 经过快速调查:任何读取此数据的信息都会完全清除.即使在调试中,如果我加载“结果视图”来获取数据列表,最初我会看到我的25个条目 – 然后如果我单击关闭,然后重新加载结果视图:Emtpy. 以前有没有这样的人? String connectionString = "SELECT * FROM thedatabase WHERE thecondition"; RowSet Data = ExecuteComand(connectionString); if (Data == null) // interestingly,I can check for null without issue { OutputMessage("Output to " + exportFile + " failed"); return; } int b = Data.Count(); // results in 25 int c = Data.Count(); // results in 0 解决方法
我不知道cassandra但我假设返回的IEnumerable< T>懒惰地执行(延期).通过使用它(例如使用foreach,ToList或Count),执行查询并且处理/关闭资源(例如连接).
如果是这种情况,您可以将其加载到内存集合中,例如: var data = ExecuteComand("SELECT * FROM thedatabase WHERE thecondition").ToList(); 现在你可以使用data.Count而不“清除”它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |