繁体   English   中英

Lambda聚合表达式C#

[英]Lambda Aggregate Expression C#

我有以下对象模型

class ObjectModel
{
    int id;
    string Name;
}

我需要连接ObjectModel列表中的名称

我使用了以下lambda表达式:

List<ObjectModel> objList = some method which returns the list
objList.Aggregate((a, b) => a.Name + " " + b.Name);

但我收到一个错误

无法将字符串隐式转换为ObjectModel

我只需要使用lambda表达式

您可以使用

var accum = string.Join(" ", objList.Select(o => o.Name));

或像这样呆在Aggregate上:

var acc2 = objList.Aggregate("", (acc,item) => acc += " " + item).Trim(); 

收到conver异常的原因是您的版本需要ObjectModel的输出。

您正在使用此重载:

public static TSource Aggregate<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, TSource, TSource> func
)

https://msdn.microsoft.com/zh-CN/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/zh-CN/library/bb549218(v=vs.110).aspx

您返回与IEnumeration相同的类型,我可以自由返回我的第二功能所做的任何类型

这样尝试;

var names = objList.Select(x => x.Name).Aggregate((a, b) => a + " " + b);

Aggregate期望使用ObjectModel表达式的类型,您应该首先select字符串Name变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM