Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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
为什么在linq to sql中where条件没有传递给oracle?_Sql_Oracle_Linq - Fatal编程技术网

为什么在linq to sql中where条件没有传递给oracle?

为什么在linq to sql中where条件没有传递给oracle?,sql,oracle,linq,Sql,Oracle,Linq,考虑以下陈述。第一个是LINQ语句,第二个是老式的SQL。它们都能产生正确的结果。LINQ语句需要42秒,因为它没有将where子句传递给Oracle。Oracle必须执行一次完整的表扫描,然后LINQ在结果之后满足where子句。相反,SQL将where子句传递给Oracle,运行大约需要3秒钟 为什么LINQ不把where子句传递给Oracle?我能做些什么 林克: SQL: 您使用的是哪家linq提供商,以及_entities.VW_QCRPT_SAMPLE_DLVRY_GRP_SITE是

考虑以下陈述。第一个是LINQ语句,第二个是老式的SQL。它们都能产生正确的结果。LINQ语句需要42秒,因为它没有将where子句传递给Oracle。Oracle必须执行一次完整的表扫描,然后LINQ在结果之后满足where子句。相反,SQL将where子句传递给Oracle,运行大约需要3秒钟

为什么LINQ不把where子句传递给Oracle?我能做些什么

林克:

SQL:


您使用的是哪家linq提供商,以及_entities.VW_QCRPT_SAMPLE_DLVRY_GRP_SITE是如何定义的?您好,非常感谢您就此与我联系。我正在为缅因州环境保护局工作的项目。我们将非常感谢您的任何帮助。以下是您询问的具体问题:_context:public分部类QCReportEntities:DbContext{public QCReportEntities:basename=QCReportEntities{}2 System.linq的版本,它是4.3.0 3关于被查询的Oracle视图的信息。在Oracle中,它是大约5个表的简单内部联接。VW_QCRPT_SAMPLE_DLVRY_GRP_SITE返回什么数据类型?它返回两个字段,这两个字段都是字符串。where子句也是字符串。然后您无法从中选择。我一定是从IEnumerable和/或IQueryable派生出来的。我想知道可能只是前者而不是后者。
var SamDlvryGrps3 = (from x in _entities.VW_QCRPT_SAMPLE_DLVRY_GRP_SITE
      where x.SAMPLEDELIVERYGROUP == EnteredsmplDlvryGrp
      select new BatchIdModView
{
     BatchId = x.BATCHID,
     sampleDeliveryGroup = x.SAMPLEDELIVERYGROUP
}).Distinct().ToList();
string sql = "select distinct BatchId, sampleDeliveryGroup from VW_QCRPT_SAMPLE_DLVRY_GRP_SITE where SAMPLEDELIVERYGROUP = :1";
List<BatchIdModView> SamDlvryGrps = _entities.Database.SqlQuery<BatchIdModView>
    (sql, new OracleParameter("@smplDlvryGrp", EnteredsmplDlvryGrp.ToUpper())).ToList();