【问题标题】:Linq to SQL: WHERE IN statementLinq to SQL:WHERE IN 语句
【发布时间】:2013-08-14 15:07:41
【问题描述】:
CREATE TABLE [MyNames]
(
    [ID] INT IDENTITY PRIMARY KEY,
    [Name] NVARCHAR(255) NULL
)

INSERT INTO [MyNames] VALUES ('John')
INSERT INTO [MyNames] VALUES ('Jane')
INSERT INTO [MyNames] VALUES ('Peter')
INSERT INTO [MyNames] VALUES ('Montgomery')
INSERT INTO [MyNames] VALUES ('Sarah')

基于上述(假设的)SQL 模式和数据,我想使用 Linq to SQL 来获取名称为 in 数组值的所有结果。

string[] names = {"John", "Cassandra", "Sarah"};

var results = (from n in db.Names
               where n.Name **in names**
               select n).ToList();

结果应包括JohnSarah。有了这些信息,我就可以添加需要添加的条目,在本例中为 Cassandra

我不想加载所有名称,因为列表可能会特别长。

【问题讨论】:

    标签: c# sql linq


    【解决方案1】:

    你可以使用names.Contains():

    string[] names = {"John", "Cassandra", "Sarah"};
    
    var results = (from n in db.Names
                   where names.Contains(n.Name)
                   select n).ToList();
    

    【讨论】:

    • 谢谢!这么明显的答案。我不敢相信我从来没想过。
    【解决方案2】:

    您可以使用Contains扩展方法:

    var results = (from n in db.Names
                   where names.Contains(n.Name)
                   select n).ToList();
    

    【讨论】:

      【解决方案3】:
      var results = (from n in db.Names
                     where names.Any(x=>x == n.Name)
                     select n).ToList();
      

      【讨论】:

        猜你喜欢
        • 2011-06-16
        • 2010-10-25
        • 2023-01-13
        • 2010-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多