Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对内存中的数据使用SQL_C#_Sql_Dataset - Fatal编程技术网

C# 对内存中的数据使用SQL

C# 对内存中的数据使用SQL,c#,sql,dataset,C#,Sql,Dataset,我有两个(或更多)来自不同数据库和数据仓库的查询的数据集。现在,我需要以可配置的方式合并这些数据集(例如,JOIN、UNION ALL、aggregate函数等),最好用SQL语法描述。 是否有一种对内存中的数据执行SQL的有效方法?我已经收集了以下方法,但似乎没有一种适合我所尝试的方法: 定义一些可以解决问题并解析它的专有语言。这实际上是当前存在的解决方案,但是维护和扩展它需要大量的工作 查找一些在数据集或其他C#数据结构上工作的SQL驱动程序。我找不到那样的东西 例如,使用SQLite将数据

我有两个(或更多)来自不同数据库和数据仓库的查询的数据集。现在,我需要以可配置的方式合并这些数据集(例如,JOIN、UNION ALL、aggregate函数等),最好用SQL语法描述。 是否有一种对内存中的数据执行SQL的有效方法?我已经收集了以下方法,但似乎没有一种适合我所尝试的方法:

  • 定义一些可以解决问题并解析它的专有语言。这实际上是当前存在的解决方案,但是维护和扩展它需要大量的工作
  • 查找一些在数据集或其他C#数据结构上工作的SQL驱动程序。我找不到那样的东西
  • 例如,使用SQLite将数据集写入表(内存中)并在其上运行SQL。不过,我必须将所有数据放入表中,然后再返回,所以这可能不是最有效的解决方案。此外,我们通常使用TSQL,因此SQLite将引入另一种SQL方言
  • 使用SQL Server将数据集写入临时表并在其上运行SQL。更多的铲铲,但这一次跨越了进程边界,并且使用了已经存在的SQL方言

  • 有人能提供其他方法吗?或者方法2的特定库

    我不知道有什么好的解决办法,对不起
    DataTable
    对过滤和排序等功能的支持非常有限,但您不会调用真正的SQL。合并后,您需要如何处理数据,因为您可以在目标中合并数据。@MarcGravel正如您所说,这些功能与真正的SQL并不接近。我认为加入根本不可能。@D.J.我正在一个报告后端工作。它实际上已经在使用,并且有大约150个不同的报告,这些报告是以XML格式定义的,并且可以执行和提供服务。我们的目标是在没有任何特别实施的情况下,尽可能多地提供我们报告的报告。可以在目的地/使用者上对数据进行后处理,但这意味着每个报表都要进行实现,并且在两个(或更多)位置上使用报表逻辑,而不是一个。然后,我认为您必须使用选项4,使用sqlbulkcopy以更快的方式将数据导入sql server表。然后你可以根据报告查询数据进行操作和过滤
    DataTable
    对过滤和排序等功能的支持非常有限,但您不会调用真正的SQL。合并后,您需要如何处理数据,因为您可以在目标中合并数据。@MarcGravel正如您所说,这些功能与真正的SQL并不接近。我认为加入根本不可能。@D.J.我正在一个报告后端工作。它实际上已经在使用,并且有大约150个不同的报告,这些报告是以XML格式定义的,并且可以执行和提供服务。我们的目标是在没有任何特别实施的情况下,尽可能多地提供我们报告的报告。可以在目的地/使用者上对数据进行后处理,但这意味着每个报表都要进行实现,并且在两个(或更多)位置上使用报表逻辑,而不是一个。然后,我认为您必须使用选项4,使用sqlbulkcopy以更快的方式将数据导入sql server表。然后,您可以查询数据,以便根据报告进行操作和过滤。