2011-02-16 33 views
0

我試圖修改以下代碼行以接受一個好的老式IN子句。修改LINQ表達式以接受IN子句

var searchResults = (
    from s in allSites 
    orderby s.SiteDescription 
    where s.SiteDescription.StartsWith(siteDescription) && 
      s.SiteLocation != null 
    select s); 

我看了一些例子,但沒有找到快速的地方。

我想補充一點,如:

WHERE s.SiteStatusId IN (3,4,5) 

我怎樣才能做到這一點?

+0

一個簡單的谷歌搜索會給你的結果不是問這裏快。我不明白爲什麼人們不會Google! – Mayank 2011-02-16 10:10:39

回答

0

嘗試:

var ids = new [] { 3, 4, 5 }; 

var searchResults = from s in allSites 
        where ids.Contains(s.Id) 
        select s; 

認爲,你想要做什麼,但它已經有一段時間,因爲我做的LINQ to SQL ...

+0

這是完美的謝謝 – John 2011-02-16 11:27:46

0

要生成IN條款,使用Contains()關於一些集合。

var query = from s in allSites 
      orderby s.SiteDescription 
      where s.SiteDescription.StartsWith(siteDescription) 
       && s.SiteLocation != null 
       && new[] { 3, 4, 5 }.Contains(s.SiteStatusId) 
      select s; 
0
var siteStatusIds = new [] { 3, 4, 5 }; 
var searchResults = (
    from s in allSites 
    orderby s.SiteDescription 
    where s.SiteDescription.StartsWith(siteDescription) && 
      s.SiteLocation != null && 
      siteStatusIds.Contains(s.SiteStatusId) 
    select s);