2012-10-30 134 views
0

有沒有辦法將下面的2個linq表達式轉換爲1?將2個linq表達式轉換爲

var criticalCategories = 
    _commonDao.GetAllByExpression<CategoryItem>(
     x => x.Category.Uid == gridAnswer.ActivityCategory.Uid && x.Critical); 

if(criticalCategories.Any()) 
{ 
    criticalWeight = criticalCategories.Min(x => x.Weight); 
} 
+1

您是否正在將'criticalCategories.Any'和'criticalCategories.Min'結合起來? 'criticalCategories'爲空時'criticalWeight'的值應該是多少? – Aducci

回答

2

您可以使用Enumerable.DefaultIfEmpty以確保如果源序列包含元素Min會產生一個特定的值。

然後,您可以寫:

var criticalCategories = _commonDao.GetAllByExpression<CategoryItem>(...); 

criticalWeight = criticalCategories 
        .Select(x => x.Weight) 
        .DefaultIfEmpty(42) 
        .Min(); 

以上是平凡可鏈接的,但我實際上並沒有在這裏連鎖它,因爲我不十分清楚如何criticalCategories應該在以後使用(如果有的話)。你能澄清一下嗎?

相關問題