2011-05-03 69 views
0

我有帳戶ID的列表,以在不同的上下文中檢索,並需要能夠做到這一點:列表<Int32>加入與LINQ-SQL建議請求表

List<Account> MyMethod(List<int> Accounts) 
{ 
    List<Account> accounts = dc.Accounts.Join(Accounts, 
               x => x.AccountID, 
               y => y, 
               (x, y) => x).ToList<Account>(); 
    return accounts; 
} 

這顯然不是一個工作查詢但處理這種請求的最好方法是什麼?

::::: UPDATE ::::

基本上我想出了這個解決方案,但它不是完成:

accounts = (from a in dc.Accounts 
         where Accounts.Contains(a.AccountID) 
         select a).ToList<Account>(); 

但是,你怎麼把它寫成一個lambda表達式?我無法獲取Accounts.Contains(x => x.AccountID)以顯而易見的原因工作。

+0

顯然?我理解這個問題,但我不會說這是「明顯的」。有人可能會爭辯說,這是檢查完美的LINQ代碼。 ;) – 2011-05-03 06:03:07

+0

明顯的原因是什麼?這正是這個LINQ查詢將被轉換爲:'dc.Accounts.Where(x => Accounts.Contains(x.AccoundID))。Tolist();' – configurator 2011-05-04 22:09:15

回答

3

你可以試試:

List<Account> MyMethod(List<int> accounts) 
{ 
    return dc.Accounts.Where(x => accounts.Contains(x.AccountID)) 
         .ToList(); 
} 

編輯:請注意,有關查詢表達式是如何轉化成非查詢窗體的詳細信息,請參閱this post在我的博客Edulinq系列。

+0

完美,謝謝 – alexm 2011-05-03 06:04:18

+0

它抱怨的時間限制,所以我不能將它標記爲馬上回答,否則我將不得不再次感謝你。 – alexm 2011-05-03 06:07:09

+0

這與警告...如果名單太長,這將炸燬......我認爲它炸燬在100左右。對於記錄的SQL Server支持大約2000個參數 – 2011-05-04 10:09:01