2011-02-16 30 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);