2013-08-14 39 views
13
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') 

Dựa trên sơ đồ trên (giả thuyết) SQL và dữ liệu, tôi muốn sử dụng LINQ to SQL để có được tất cả các kết quả nơi tên là trong giá trị của một mảng.LINQ to SQL: WHERE trong bản Tuyên Bố

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

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

Kết quả phải bao gồm JohnSarah. Với thông tin đó, tôi có thể thêm các mục cần thêm vào, trong trường hợp này là Cassandra.

Tôi không muốn tải tất cả các Tên vì danh sách có thể đặc biệt dài.

Trả lời

20

Bạn có thể sử dụng names.Contains():

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

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

Cảm ơn! Một câu trả lời rõ ràng như vậy. Tôi không thể tin rằng tôi không bao giờ nghĩ về nó. – cbillowes

3
var results = (from n in db.Names 
       where names.Any(x=>x == n.Name) 
       select n).ToList(); 
4

Bạn có thể sử dụng phương pháp Contains phần mở rộng:

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