1

オブジェクトのリスト(ジャンル、国籍など)をざっと見る機能があります。特定のプロパティの追加を返す必要があります(オブジェクトごとに異なります)。これらのリストされたオブジェクトのコードを (DDL で) 変更できません。

ここに私が今しなければならないことのいくつかの例があります:

    private String formatListString(List<Genre> list)
    {
        for (...)
        {
            str += list[i].Value;
            ...
        }
        return str;
    }

    private String formatListString(List<Nationality> list)
    {
        for (...)
        {
            str += list[i].Code;
            ...
        }
        return str;
    }

どうすれば1つの関数で作成できますか? 関数にパラメーターを追加して、使用するプロパティを指定することもできますか?

ありがとう。

4

2 に答える 2

3
return String.Join("...", list.Select(o => o.Code));

それがうまくいかない場合は、ジェネリックとラムダを使用できます。

private string FormatList<T>(IEnumerable<T> list, Func<T, String> prop)
于 2013-11-01T12:39:54.053 に答える
1

ラムダを渡して、必要なプロパティを選択できます。

private String formatListString<T>(List<T> list, Func<T, string> selector)
    {
        for (...)
        {
            str += selector(list[i]);
            ...
        }
        return str;
    }

次のように呼び出します。

var genres = formatListString(genreList, x => x.Value);
var nationalities = formatListString(nationalityList, x => x.Code);

ジェネリック型パラメーターは呼び出しから自動的に推論できるため、明示的に指定する必要はありません (つまり、 write formatListString<Genre>(genreList, x => x.Value);) 。

于 2013-11-01T12:42:38.017 に答える