我有一个功能,可以浏览对象列表(类型,国籍等)。它必须返回添加特定属性(每个对象不同)。我无法修改这些列出的对象的代码(在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;
}
如何在单一功能中制作? 也许在函数中添加一个参数来指定要使用的属性?
感谢。
答案 0 :(得分:3)
return String.Join("...", list.Select(o => o.Code));
如果这对您不起作用,您可以使用泛型和lambda:
private string FormatList<T>(IEnumerable<T> list, Func<T, String> prop)
答案 1 :(得分:1)
您可以传入lambda来选择所需的属性:
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);
可以从调用中自动推断泛型类型参数,因此您不必明确指定它(即写formatListString<Genre>(genreList, x => x.Value);
)