C# c动态sql通过服务器命令或linq循环

C# c动态sql通过服务器命令或linq循环,c#,sql,linq,dynamic,C#,Sql,Linq,Dynamic,给定一个在运行时只知道相关字段的数据集。我想通过循环选择每一行数据进行分析。是否最好: 通过直接打开和关闭数据库,每次运行直接sql查询以获取行 在循环之前将所有适用的行拉入datatable,然后通过linq从循环内部选择它们 例如,我正在读取一个文件,其中显示查找a、b和c行,然后我的查询变成从表中选择col1、col2、col3,其中col1='a'或col1='b'或col1='c' 但是我不知道编译时会是a,b,c,只有在我运行程序之后 谢谢 编辑:根据您的分析所需的时间、基础事务锁定

给定一个在运行时只知道相关字段的数据集。我想通过循环选择每一行数据进行分析。是否最好:

通过直接打开和关闭数据库,每次运行直接sql查询以获取行

在循环之前将所有适用的行拉入datatable,然后通过linq从循环内部选择它们

例如,我正在读取一个文件,其中显示查找a、b和c行,然后我的查询变成从表中选择col1、col2、col3,其中col1='a'或col1='b'或col1='c' 但是我不知道编译时会是a,b,c,只有在我运行程序之后

谢谢


编辑:根据您的分析所需的时间、基础事务锁定(如果有)以及在db服务器上保留结果集所阻止的资源,在术语或速度和最佳实践方面更好。结果集为1或2。。。但对我来说,2似乎不太可能产生巨大的结果集,这些结果集会长时间打开,并且会消耗数据库系统上的内存,仅此一点就建议您重新考虑整个数据处理工作流程。。。我只是在运行时构建SQL,甚至可以对DB see实体框架直接使用linq,并且只有在运行时遇到严重的性能问题时,我才会重构…

StackOverflow并不是用于更好的类型问题,因为它们通常非常主观/基于观点/导致参数。。然而,我们可以自由决定是否应该回答主观问题,我认为这是可以回答的问题之一


我断言,在99%的情况下,最好将数据留在数据库中,并使用数据库中内置的SQL功能进行查询。原因是数据库是专门为存储和查询数据而构建的。得出这样的结论有点可笑,即通过网络将1亿行传输到设计拙劣的数据存储容器中,然后使用循环中的循环进行天真的搜索是一种很好的资源利用,如果可以将其保留在专门构建的索引良好的容器中,这就是循环中的linq,在当前驻留的企业级硬件上安装高性能的企业级软件,并请求检索这些记录中的一小部分,以便通过慢速网络链接传输到功率有限的客户端

在什么方面更好?除此之外,很难理解您在标准实践和速度方面想要做得更好。请澄清:您正在迭代所有行,但在运行时只知道相关列?如果您知道相关字段,您的分析是否可以表示为SQL?我以前知道相关列,但在运行时我只知道相关行,因此我在读取一个文件,该文件将显示查找项目a、b和c,然后我的SQL语句变为select col 1、col 2、col 3,其中col 1=a或b或c