我正在尝试以 {type}:{number} 格式打印电话号码列表(\n 代表每个号码)。因此,我将从 2 个数字的列表中打印出:
Home: 111-111-1111
Cell: 222-222-2222
到目前为止,我可以选择一个匿名类型,但是当我进行聚合时,它会在屏幕上打印出整个匿名类型,如下所示:
new { phoneType = Home + ": ", phoneNumber = 111-111-1111 }
我什至应该使用聚合吗? 这就是我正在使用的:
PhoneNumbers.Select(x => new { phoneType = x.PhoneType, phoneNumber = x.PhoneNumber1 }).Aggregate(
(p, x) => new { phoneType = p.phoneType + ": ", x.phoneNumber });
最佳答案
如果您只想将电话号码作为字符串,您可以在 Select
调用中创建该字符串:
var x = PhoneNumbers.Select(x => string.Format("{0}: {1}", x.PhoneType, x.PhoneNumber));
您的聚合调用基本上是一个错误(假设它甚至可以编译),因为您将“当前”电话号码与以前的电话类型组合在一起。由于现有的字符串方法,也没有必要将电话号码组合为文本:
var phoneNumberStrings = PhoneNumbers.Select(x => string.Format("{0}: {1}", x.PhoneType, x.PhoneNumber));
var text = string.Join(Environment.NewLine, phoneNumberStrings);
关于c# - 使用 lambda 聚合匿名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20479787/