C# 使用lambda聚合匿名类型

C# 使用lambda聚合匿名类型,c#,linq,lambda,C#,Linq,Lambda,我正在尝试以{type}:{number}格式打印电话号码列表(\n每个号码)。因此,从2个数字的列表中,我会打印出: Home: 111-111-1111 Cell: 222-222-2222 到目前为止,我可以选择匿名类型,但当我进行聚合时,它会在屏幕上打印出整个匿名类型,如下所示: new { phoneType = Home + ": ", phoneNumber = 111-111-1111 } 我应该使用聚合吗? 这就是我正在处理的问题: PhoneNumbers.Se

我正在尝试以{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
call中创建该字符串:

var x = PhoneNumbers.Select(x => string.Format("{0}: {1}", x.PhoneType, x.PhoneNumber));
您的聚合呼叫基本上是一个bug(假设它已编译),因为您将“当前”电话号码与以前的电话类型组合在一起。由于现有的字符串方法,也不需要将电话号码组合为文本:

var phoneNumberStrings = PhoneNumbers.Select(x => string.Format("{0}: {1}", x.PhoneType, x.PhoneNumber));
var text = string.Join(Environment.NewLine, phoneNumberStrings);

如果您只想将电话号码作为字符串,可以在
Select
call中创建该字符串:

var x = PhoneNumbers.Select(x => string.Format("{0}: {1}", x.PhoneType, x.PhoneNumber));
您的聚合呼叫基本上是一个bug(假设它已编译),因为您将“当前”电话号码与以前的电话类型组合在一起。由于现有的字符串方法,也不需要将电话号码组合为文本:

var phoneNumberStrings = PhoneNumbers.Select(x => string.Format("{0}: {1}", x.PhoneType, x.PhoneNumber));
var text = string.Join(Environment.NewLine, phoneNumberStrings);

虽然您可以使用
IEnumerable.Aggregate
,但我觉得如果您只使用
string.Join
,它会更干净。阅读您的代码的人如果看到“用换行符连接这些字符串”,将能够更容易地理解其含义


虽然您可以使用
IEnumerable.Aggregate
,但我觉得如果您只使用
string.Join
,它会更干净。阅读您的代码的人如果看到“用换行符连接这些字符串”,将能够更容易地理解其含义


缺少实际执行查询的调用,例如ToList,但总体上回答不错。他不需要聚合,即使他想要的是对象而不是字符串,他也只需要调用来执行查询,而不是聚合function@BoredBlazer:不确定您何时发表评论,但
string.Join
将枚举给出的内容。这是在添加聚合解释之前。我假设他试图使用聚合来执行查询或其他什么,所以我不想让他重复那个错误。是的,我最终做了Timothy Shields在下面做的事情,但这基本上也是你说的,你是第一个回答的。谢谢你的帮助,我有一种直觉,聚合不是答案。错过了一个实际执行查询的调用,比如ToList,但总体上回答不错。他不需要聚合,即使他想要的是对象而不是字符串,他也只需要调用来执行查询,而不是聚合function@BoredBlazer:不确定您何时发表评论,但
string.Join
将枚举给出的内容。这是在添加聚合解释之前。我假设他试图使用聚合来执行查询或其他什么,所以我不想让他重复那个错误。是的,我最终做了Timothy Shields在下面做的事情,但这基本上也是你说的,你是第一个回答的。谢谢你的帮助,我有一种直觉,总感觉不是答案。