加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – Linq将复杂类型聚合成字符串

发布时间:2020-12-14 04:33:02 所属栏目:百科 来源:网络整理
导读:我看到了.net聚合函数的简单例子如下: string[] words = { "one","two","three" };var res = words.Aggregate((current,next) = current + "," + next);Console.WriteLine(res); 如果您想聚合更复杂的类型,那么如何使用“聚合”功能? 例如:一个具有2个属
我看到了.net聚合函数的简单例子如下:
string[] words = { "one","two","three" };
var res = words.Aggregate((current,next) => current + "," + next);
Console.WriteLine(res);

如果您想聚合更复杂的类型,那么如何使用“聚合”功能?
例如:一个具有2个属性的类,例如’key’和’value’,你希望输出如下所示:

"MyAge: 33,MyHeight: 1.75,MyWeight:90"
你有两个选择:

>项目到一个字符串然后聚合:

var values = new[] {
    new { Key = "MyAge",Value = 33.0 },new { Key = "MyHeight",Value = 1.75 },new { Key = "MyWeight",Value = 90.0 }
};
var res1 = values.Select(x => string.Format("{0}:{1}",x.Key,x.Value))
                .Aggregate((current," + next);
Console.WriteLine(res1);

这具有使用第一个字符串元素作为种子(没有前缀“,”)的优点,但是将消耗更多的内存用于在进程中创建的字符串。
>使用接受种子的聚合重载,也许是一个StringBuilder:

var res2 = values.Aggregate(new StringBuilder(),(current,next) => current.AppendFormat(",{0}:{1}",next.Key,next.Value),sb => sb.Length > 2 ? sb.Remove(0,2).ToString() : "");
Console.WriteLine(res2);

第二个代理将我们的StringBuilder转换成一个字符串,使用条件来修剪起始的“,”。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读