Linq的“IN”操作員

c# c#-3.0 entity-framework linq

我試圖在Linq中使用Entity Framework轉換舊的原始Sql查詢。

它使用IN運算符和一組項目。查詢是這樣的:

SELECT Members.Name
FROM Members
WHERE Members.ID IN ( SELECT DISTINCT ManufacturerID FROM Products WHERE Active = 1)
ORDER BY Members.Name ASC

由於子查詢的返回不是單個字符串而是字符串集合,因此我無法使用String.Contains()方法。

我想過做的事情:

var activeProducts = (
from products in db.ProductSet
where product.Active == true
select product.ManufacturerID);

然後

var activeMembers = (
from member in db.ContactSet
where member.ID.ToString().Contains(activeProducts));

但它停止在包含說它有無效的參數...我不能選擇activeProducts.ManufacturerID,因為很明顯,proprety不存在,因為它返回IQueryable ...

我在這裡要做的就是返回一個至少有一個活躍產品的成員列表。

任何提示?

[編輯]

這是完整的查詢代碼......我嘗試使用第二個表達式的包含,Linq似乎不喜歡它:

Server Error in '/' Application. LINQ to Entities does not recognize the method 'Boolean Contains[String](System.Linq.IQueryable``1[System.String], System.String)' method, and this method cannot be translated into a store expression.

    var activeProduct =(from product in Master.DataContext.ProductSet
                        where product.Active == true
                           && product.ShowOnWebSite == true
                           && product.AvailableDate <= DateTime.Today
                           && ( product.DiscontinuationDate == null || product.DiscontinuationDate >= DateTime.Today )
                        select product.ManufacturerID.ToString() );

    var activeArtists = from artist in Master.DataContext.ContactSet
                        where activeProduct.Contains(artist.ID.ToString())
                        select artist;

    NumberOfArtists = activeArtists.Count();

    artistsRepeater.DataSource = activeArtists;
    artistsRepeater.DataBind();

[更多細節] ManufacturerID顯然是一個可以為空的GUID ......

由於某種原因,ContactSet類不包含對產品的任何引用,我想我將不得不進行連接查詢,這裡沒有線索。

一般承認的答案

var activeMembers = (
from member in db.ContactSet
where activeProducts.Select(x=>x.ID).Contains(member.ID));

熱門答案

嘗試where activeProducts.Contains(member.ID)
編輯 :你沒有任何ToString s嘗試過嗎?



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因