将2个linq表达式转换为

时间:2012-10-30 14:37:29

标签: linq

无论如何将以下2个linq表达式更改为1?

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

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

1 个答案:

答案 0 :(得分:2)

如果您的源序列不包含任何元素,您可以使用Enumerable.DefaultIfEmpty确保Min将生成特定值。

然后你可以写:

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

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

以上是可以轻松连接的,但我实际上并没有在这里链接它,因为我不太确定以后应该如何使用criticalCategories(如果有的话)。你能澄清一下吗?