DECODE在Oracle中内置函数
decode( expression , search , result [, search , result]... [, default] )
http://www.techonthenet.com/oracle/functions/decode.php
想要C#语言中的类似功能。有内置方法吗?
我知道如果结构或开关我可以使用if else但是我需要动态地执行它。如果不存在,请分享一些逻辑步骤来创建一个。
感谢您宝贵的时间。
答案 0 :(得分:2)
您正在寻找Dictionary<int, string>
。
答案 1 :(得分:1)
一个老问题,但由于它被另一个答案拉出了默默无闻,以下是我试图复制decode
中C#
函数的方法。不完全相同,但也不是太糟糕:
public static TOutput Decode<TInput, TOutput>(TInput expression, params Tuple<TInput, TOutput>[] searchResultPairs)
=> DecodeWithDefault(expression, default(TOutput), searchResultPairs);
public static TOutput DecodeWithDefault<TInput, TOutput>(TInput expression, TOutput defaultValue, params Tuple<TInput, TOutput>[] searchResultPairs)
{
foreach(var searchResultPair in searchResultPairs)
{
if ((expression == null && searchResultPair.Item1 == null)
|| (expression != null && expression.Equals(searchResultPair.Item1)))
{
return searchResultPair.Item2;
}
}
return defaultValue;
}
样本用法:
Console.WriteLine(Decode(5, Tuple.Create(23, "twenty-three"), Tuple.Create(5, "five")));
Console.WriteLine(Decode(23, Tuple.Create(23, "twenty-three"), Tuple.Create(5, "five")));
Console.WriteLine(Decode(6, Tuple.Create(23, "twenty-three"), Tuple.Create(5, "five")));
Console.WriteLine(DecodeWithDefault(6, "not found", Tuple.Create(23, "twenty-three"), Tuple.Create(5, "five")));
输出:
5个
二十三。未找到