转换为lambda和意外结果

时间:2018-08-25 23:07:30

标签: c# string linq lambda graph

所以,我的“ Type1”代码可以正常工作了。我的问题是为什么“ Type2”不起作用?我认为从本质上讲,他们在做同样的事情,但是显然“ Type2”没有按照我期望的那样为Google图表构建JSON字符串。

/app

2 个答案:

答案 0 :(得分:1)

Select是一个延迟的操作。只需调用Select,您就不会执行它。您还必须包含.ToArray().ToList()或使用foreach循环执行它。

您是否执行过此操作:

data.Select(point => pieData.Append($@"['{point.Category}', {point.Count}],")).ToArray();

或者这个:

foreach (var x in data.Select(point => pieData.Append($@"['{point.Category}', {point.Count}],")))
{ }

然后该代码将起作用。

请记住,这仅适用于pieData.Append(...)返回一个值。如果没有,那么这两种方法都无法编译。

答案 1 :(得分:0)

如果数据是列表或数组,则csn使用ForEach代替Select来进行目标响应:

data.ForEach(point => pieData.Append($@"['{point.Category}', {point.Count}],"));

或通过选择并加入:

var strings = data.Select(point => $@"['{point.Category}', {point.Count}]").ToList();

string pieData = string.Join(",", strings);