Попробуйте что-нибудь подобное. Я создал метод расширения в IEnumerable:
public static class Extension
{
public static string ConcatinateString<T>(this IEnumerable<T> collection, Func<T, string> GetValue)
{
StringBuilder sb = new StringBuilder();
foreach (var item in collection)
{
sb.Append(GetValue(item));
}
return sb.ToString();
}
}
Тогда так назовите это, вы бы использовали что-то вроде этого:
var values = new List<TestClass>
{
new TestClass(){Name="John",Comment="Hello"},
new TestClass(){Name="Smith", Comment="Word"}
};
string s = values.ConcatinateString((x => x.Name));
string v = values.ConcatinateString((x => x.Comment));
В этом примере s = "JohnSmith"
и v = "HelloWord"
. Func () дает вам гибкость. Вы в основном указываете функции, куда идти, чтобы получить строку для конкатенации. Я также использовал StringBuilder на случай, если вы работаете с длинными коллекциями.