当前位置: 首页 > 面试题库 >

如何将SQL“ HERE expr IN(查询)”转换为LINQ?

方和顺
2023-03-14
问题内容

基本上,我想使用linq进行此SQL查询:

SELECT * 
FROM Orders 
WHERE Identifier IN (SELECT DISTINCT [Order] FROM OrderRows WHERE Quantity = '1')

这是我想出的:

var q = from o in db.Orders 
     where o.Identifier in (from r in db.OrderRows 
                           where r.Quantity == 1 select r.Order).Distinct());

o.Identifier 无效。

关键字IN的正确语法是什么?


问题答案:

我有点晚了,但是我做了一个演示!

正如其他人所说,我始终使用Contains:

using System;
using System.Collections.Generic;
using System.Linq;

namespace ContainsExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var foos = new List<Foo>
            {
                new Foo { ID = 1, FooName = "Light Side" },
                new Foo { ID = 2, FooName = "Dark Side" }
            };

            var bars = new List<Bar>
            {
                new Bar { ID = 1, BarName = "Luke", FooID = 1 },
                new Bar { ID = 2, BarName = "Han", FooID = 1 },
                new Bar { ID = 3, BarName = "Obi-Wan", FooID = 1 },
                new Bar { ID = 4, BarName = "Vader", FooID = 2 },
                new Bar { ID = 5, BarName = "Palpatine", FooID = 2 },
                new Bar { ID = 6, BarName = "Fett", FooID = 2 },
                new Bar { ID = 7, BarName = "JarJar", FooID = 3 }
            };

            var criteria = from f in foos
                           select f.ID;

            var query = from b in bars
                        where criteria.Contains(b.FooID)
                        select b;

            foreach (Bar b in query)
            {
                Console.WriteLine(b.BarName);
            }

            Console.WriteLine();
            Console.WriteLine("There should be no JarJar...");

            Console.ReadLine();
        }
    }

    public class Foo
    {
        public int ID { get; set; }
        public string FooName { get; set; }
    }

    public class Bar
    {
        public int ID { get; set; }
        public string BarName { get; set; }
        public int FooID { get; set; }
    }   
}


 类似资料:
  • 我想在JPA 2.1中将“命名查询”转换为“SQL查询”,并在运行之前对其进行更改。 例如,我有一个命名查询:从CU所在的客户中选择CU。代码=?1,我希望在PAR之后获得查询并对其进行转换和编辑(例如添加模式名称)并创建此查询:从db1.cc1cust cu中选择*其中cu.cc1cod=?1. 我该怎么做? 问候

  • 问题内容: 我有很多这样的SQL查询: 这些查询必须在不同的数据库引擎(MySql,Oracle,DB2,MS-Sql,Hypersonic)上运行,所以我只能使用通用的SQL语法。 在这里,我读到,使用MySql时,该语句未经过优化,而且速度确实很慢,因此我想将其切换为。 我试过了: 但这没有考虑到关键字。 问题:如何使用该方法消除重复的行? 问题答案: 要使用JOIN编写此代码,可以使用内部选

  • 问题内容: 我的最后一篇文章是关于在LEFT OUTER JOIN上编写带有条件的SQL查询的最佳方法: LEFT OUTER JOIN带有条件(在哪里排序)? 现在,我需要将该段好的SQL转换成一个不错的Active Record查询(Rails 3)。;-) 我有2个型号: 培训 has_many:training_histories TrainingHistory 所属类别:培训 如何编写范

  • 问题内容: 我想将以下SQL查询转换为Elasticsearch之一。谁能帮上忙 我尝试了以下方法: 但不确定我是否做对了,因为它无法验证结果。似乎要在聚合内添加查询。 问题答案: 假设您使用Elasticsearch 2.x,则有可能在Elasticsearch中 具有 -semantics。我不知道2.0之前的可能性。 您可以使用新的Pipeline Aggregation Bucket Se

  • 我有两个表,它们通过一个外键来维护它们之间的父子关系。查询如下所示。我想在使用jpa的同时使用标准版。所以有人可以帮助我使用标准版吗 表“child”的“notification\u id\u child”列是外键,并引用表“parent”的主键。

  • 问题内容: 多亏了Erwin Brandstetter在我之前的问题“具有has_many关系的订单”中的帮助,我的SQL查询才能正常工作。 如何将该SQL转换为ActiveRecords或AREL查询以在范围中使用? 我最近来的是在朋友的帮助下… …这给了我一个错误: 更新: 我之前的问题对相关的架构和查询有完整的描述。但是基本上Articles have_many Metrics和一个Metr