Lambda表达式与空paren()

时间:2014-05-23 08:59:32

标签: c# linq lambda

我遇到的代码如下:

var vpAlias = null;
var prices = session.QueryOver<Vehicle>()
    .Left.JoinAlias<VehiclePrice>(x => x.VehiclePrice, () => vpAlias, x => x.VehiclePriceTypeId == 1)
    .Where(() => vpAlias.Id == null || vpAlias.VehiclePriceTypeId == 1)
    .Select(x => x.Id, () => vpAlias.Price)
    .ToList();

在其lambda表达式中使用()。那是什么意思 ?它是否仅用作占位符?

4 个答案:

答案 0 :(得分:16)

它只是意味着它是一个空参数列表 - 对于没有任何参数的委托类型。

您可以撰写x => x.Id这一事实只是(x) => x.Id的简写,而(Vehicle x) => x.Id也是{{1}}的简写。这只是一个参数列表。

答案 1 :(得分:3)

它与:{/ p>中的空()相同

static SomeType YourNamedMethod()
{
   return vpAlias;
}

答案 2 :(得分:3)

括号包含参数列表。只有你有1个参数才能让它们关闭。 例子:

0个参数:() => result

1个参数:(x) => result or x => result

2个参数:(x, y) => x + y;

答案 3 :(得分:1)

() => { ... }Func<TOut>,所以它不需要任何输入,你可以将其视为

<returnType> MyFunction () { // Code goes here }