2010-09-14 31 views
0

這是我想要做的事情。我知道你可以再次查詢linq結果,但是因爲這些結果是分組的,所以我不知道如何去做。我認爲我能想到的最好的想法是有一個查詢獲取一切,然後做我的if語句,然後做另一個查詢組合一切(所以有3個單獨的查詢,而不是1)。任何想法如何最好地做這種事情?LINQ查詢可以改變,但可以組?

var Result = 
    from a in DB.Table 

    if(Something == 0) 
    { 
     where a.Value > 0 
    } 

    group a by a.Value into b 
    select new {Group = b}; 

回答

1
var result = from a in DB.Table; 

if (Something == 0) 
{ 
result = result.Where(r => r.Value > 0); 
} 

var finalResult = 
from a in result 
group a by a.Value into b 
select new {Group = b}; 
+0

第一條語句需要select? – sooprise 2010-09-14 19:46:25

+0

你真的不需要選擇,但你可以有一個。重點是它應該是IQueryablew

。如果你從DB.Table中選擇一個或從DB.Table中選擇一個或兩個都有一個返回類型IQueryable
Jeff2010-09-14 20:26:08

+0

@Soo只需從DB.Table中選擇一個...或Db.Table .AsQueryable(),除此之外,這個答案就是它。 +1 – eglasius 2010-09-14 20:42:48

0

可以限制LINQ查詢與 「裏」 的語句。試試這個。是這樣的:

VAR解析度= 從C在db.table 凡c.Id == 1 選擇C

1

這會你在找什麼?

 var result = 
     from a in DB.Table 
     group a by a.Value into g 
     where !Something.Equals(0) || g.Key > 0 
     select new { Group = g }; 
+0

簡潔明瞭 – cordialgerm 2010-09-15 04:20:08