2012-04-25 145 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);