2012-04-25 146 views
1

我有两个疑问这两个工作,但需要将它们组合成一个工作查询结合两个查询到一个一个查询

查询1

var now = DateTime.Now; 
    var twoWeeksAgo = now.AddDays(-14); 

    var advert = 
     from m in db.tbl_Property 
     where m.Prop_Update >= twoWeeksAgo && m.Prop_Update <= now 
     select m; 

查询2

var Props = 
     from n in db.tbl_Property. 
     Where(c => c.Prop_AvailableSpaces > 0) 
     select n; 

任何帮助或建议欢迎

+0

这是否意味着你要在一个查询或要已经申请单查询这两个条件都结果集? – 2012-04-25 07:37:00

+0

在单个查询中应用了这两个条件 – 2012-04-25 07:38:25

回答

2

你的意思是这样的:

var now = DateTime.Now; 
var twoWeeksAgo = now.AddDays(-14); 

var advert = db.tbl_Property 
       .Where(m => m.Prop_Update >= twoWeeksAgo && m.Prop_Update <= now 
          && m.Prop_AvailableSpaces > 0); 

或许相结合||而不是:

var advert = db.tbl_Property 
       .Where(m => (m.Prop_Update >= twoWeeksAgo && m.Prop_Update <= now) 
          || m.Prop_AvailableSpaces > 0); 

(请注意,我没有用在这里查询表达式,你使用一个where子句是

0

也许是这样的:

var advert = 
      from m in db.tbl_Property 
      where 
       (m.Prop_Update >= twoWeeksAgo && m.Prop_Update <= now) 
       || (m.Prop_AvailableSpaces > 0) 

      select m; 
3

我会改变这些查询传中的原来IQueryable<Property>(或任何类型的),那么你可以做:

var advert = from m in source 
      where m.Prop_Update >= twoWeeksAgo && m.Prop_Update <= now 
      select m; 

传递db.tbl_Property在为source,则:

var Props = from n in filteredProperties 
      where n.Prop_AvailableSpaces > 0 
      select n; 

即组成

+0

为什么2个LINQ查询何时可以单个执行。和更多,他已经有2查询,他希望他们合并到1 – 2012-04-25 07:55:36

+0

@尼克希尔我的假设是有两个谨慎的过滤器(分开申请),需要结合(组成)**在运行时**,在上述情况是好的。如果这个想法是在编译时*平坦化的话,那么确定,只需重写这两个查询即可。 – 2012-04-25 08:24:17

0
 var advert = db.tbl_Property.Where(m => m.Prop_Update >= twoWeeksAgo 
    && m.Prop_Update <= now && m.Prop_AvailableSpaces > 0);