我有以下对象模型
class ObjectModel
{
int id;
string Name;
}
我需要连接Object of ObjectModel
中的名称我使用过这个lambda表达式:
List<ObjectModel> objList = some method which returns the list
objList.Aggregate((a, b) => a.Name + " " + b.Name);
但是我收到了错误
无法将字符串隐式转换为ObjectModel
我只需要使用lambda表达式
答案 0 :(得分:1)
您可以使用
var accum = string.Join(" ", objList.Select(o => o.Name));
或者像Aggregate一样:
var acc2 = objList.Aggregate("", (acc,item) => acc += " " + item).Trim();
您收到转换异常的原因是您的版本需要ObjectModel的输出。
您正在使用此重载:
public static TSource Aggregate<TSource>(
this IEnumerable<TSource> source,
Func<TSource, TSource, TSource> func
)
https://msdn.microsoft.com/en-us/library/bb548651(v=vs.110).aspx
我正在使用
public static TAccumulate Aggregate<TSource, TAccumulate>(
this IEnumerable<TSource> source,
TAccumulate seed, // ""
Func<TAccumulate, TSource, TAccumulate> func // (acc,item) => string
)
https://msdn.microsoft.com/en-us/library/bb549218(v=vs.110).aspx
你返回与IEnumeration相同的类型,我可以自由地返回我的第二个Func所做的任何类型
答案 1 :(得分:1)
试试这个;
var names = objList.Select(x => x.Name).Aggregate((a, b) => a + " " + b);
Aggregate
期望ObjectModel
表达式的类型,您应首先select
字符串Name
变量。