2011-05-02 81 views
1

使用Lambda表達式和在節流使用Lambda表達式和在節流

我有一個查詢,我想基於一個字段的值來限制的結果,如果它包含在值列表。

public List<Client> GetClientsByExtractIds(List<Guid> extractIds) 
    { 
     AJGDMSStagingContext context = new AJGDMSStagingContext(STAGING_CONNECTION_STRING); 

     return context.Clients.ToList(); 
    } 

所以它需要是這樣的:Clients.ExtractId.Contains(ExtractIds)

一種選擇我是獲得所有客戶端,然後只需通過所有的人都騎自行車在內存,​​但我寧願直接從得到它D B。

+2

什麼是「限制器」? – SLaks 2011-05-02 18:11:22

+0

你的數據來自何方? – SLaks 2011-05-02 18:11:41

+0

限制器....在(extractId1,extractId2,extractId3) – 2011-05-02 18:43:11

回答

3
return context.Clients.Where(c => extractIds.Contains(c.ExtractId)).ToList(); 
+1

要補充說明:出於性能考慮,我將'extractIds'聲明爲'HashSet'。但無論如何,這是微觀優化。 – 2011-05-02 18:14:03

+0

賓果。我沒有意識到像所有事情一樣,它只是顯得有些倒退。我運行了剖析器,可以看到它的位置「[t0]。[ExtractId] IN(@ p0)'」 – 2011-05-02 18:42:34