2009-02-10 68 views
1

我試圖找出如何做到這一套,我「米難住了。我敢肯定,這是一些簡單的我只是失蹤。如何搭配使用LINQ-2-SQL

說我有一個表,是一個名稱的集合,我要檢查,如果這些名稱的一個子集存在這樣的:?

var names = new List{ "John", "Steven", "Mary"}; 
var dbNames = from n in Db.Names 
       where n.FirstName == //names ???; 

反正有沒有做到這一點

感謝

回答

1
where names.Contains(n.FirstName) 

雖然你必須觀察你調用的類型 - 一些Contains方法不會被轉換爲LINQ到SQL。您可能需要先將它轉換爲IEnumerable或IQueryable,或者其他東西。

1

如果您正在查看整個集合是否存在於數據庫中,則應使用Intersect()。

var names = new List<string> { "John", "Steven", "Mary" }; 
var dbNames = Db.Names.Select(n => n.FirstName) 
         .Distinct(); 
bool isSubset = dbNames.Intersect(names).Count() == names.Count; 

您希望交集的大小與第二集大小相同。如果是這種情況,那麼第二組是第一組的子集。