0

Oracle の DECODE 組み込み関数

decode( expression , search , result [, search , result]... [, default] )

http://www.techonthenet.com/oracle/functions/decode.php

C# 言語で同様の機能が必要です。組み込みメソッドはありますか?

if else if 構造またはスイッチを使用できることはわかっていますが、動的に実行する必要があります。ない場合は、作成するための論理的な手順をいくつか共有してください。

貴重な時間をありがとうございました。

4

2 に答える 2

2

を探していますDictionary<int, string>

于 2013-07-25T02:44:25.357 に答える
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")));

出力:


二三

見つかりません

于 2016-07-14T14:16:57.267 に答える