Linq to SQL:WHERE IN语句

Cla*_*wer 14 c# sql linq

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')
Run Code Online (Sandbox Code Playgroud)

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

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

var results = (from n in db.Names
               where n.Name **in names**
               select n).ToList();
Run Code Online (Sandbox Code Playgroud)

结果应包括JohnSarah.根据该信息,我可以添加需要添加的条目,在本例中Cassandra.

我不想加载所有名称,因为列表可能会异常长.

jmo*_*dyk 24

你可以使用names.Contains():

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

var results = (from n in db.Names
               where names.Contains(n.Name)
               select n).ToList();
Run Code Online (Sandbox Code Playgroud)


Mic*_*eyn 5

您可以使用Contains扩展方法:

var results = (from n in db.Names
               where names.Contains(n.Name)
               select n).ToList();
Run Code Online (Sandbox Code Playgroud)