Lambda表达式中的案例

时间:2010-06-23 14:38:11

标签: c# lambda case

我编写了一个调用返回linq查询的方法的方法。 在这个方法中,我需要将一个case表达式应用于我从我调用的方法接收的linq查询。我认为也许使用lambda表达式可以应用case表达式,但是我该怎么做呢?

3 个答案:

答案 0 :(得分:1)

好吧,你可以使用语句体lambda表达式:

Func<int,string> x = value =>
{
    switch(value)
    {
        case 0: return "hello";
        case 1: return "there";
        default: return "other";
    }
};

但是,您将无法将其转换为表达式树,因为它们仅支持具有单个表达式的lambda表达式。您是否尝试在此处使用LINQ to SQL?

当然,你可以使用嵌套条件,而这应该适用于表达式树:

Expression<Func<int,string>> x = value =>
    value == 0 ? "hello"
    : value == 1 ? "there"
    : "other";

这是一个排序的开关/案例......虽然效率不高,但对你来说可能已经足够了。

答案 1 :(得分:1)

你能用一个普通的老函数来代替lambda吗?

X.Select( GetY );

or

X.Select( x => GetY(x) );

or

from x in X
select new
{
   y = GetY(x)
};

...

private YType GetY( XType x )
{
    switch( x )
    {
       ...
    }
}

答案 2 :(得分:-1)

您可以使用三元语句。

[boolean expression] ? [result if true] : [result if false]