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