LINQ中的方法语法:尝试在长查询中使用变量

时间:2014-06-07 19:32:45

标签: linq

LINQ新手在这里。

我有一个很长的LINQ查询,称为MYLONGQUERY,它返回某些类实例的集合。如果列表不为空,我想返回第一个实例的属性(MYPROPERTY);否则返回一些默认值(DEFAULTPROPERTY)。所以查询看起来像这样

(0!= MYLONGQUERY.count())? MYLONGQUERY.FirstOrDefault()。MYPROPERTY:DEFAULTPROPERTY

这很好用。但是,我不喜欢我必须在"?"之前和之后重复MYLONGQUERY这一事实。我一直在尝试Let and Into,但未能让这些工作。它必须是方法语法,而不是查询语法。建议?欣赏它。

1 个答案:

答案 0 :(得分:0)

您必须先选择属性,然后使用DefaultIfEmpty指定默认值:

var prop = MYLONGQUERY
    .Select(x => x.MYPROPERTY)
    .DefaultIfEmpty(DEFAULTPROPERTY) // new default-value
    .First();                        // never exception