Lambda提取一些整数?

时间:2013-06-17 19:15:54

标签: c# asp.net-mvc lambda

List<int[]> A = ServiceItems.First()
.ServiceItemDetails.Select(x => new int[]{ x.Numbers}).ToList();

这给我一个整数数组列表。

我需要一个普通整数列表

我试过了:

List<int> A = ServiceItems.First()
.ServiceItemDetails.Select(x => new int{ x.Numbers})
.ToList();

哎哟!

  

无法使用集合初始化类型int ....不实现IEnumerable

我如何实现这一目标以及究竟发生了什么?

谢谢!

6 个答案:

答案 0 :(得分:7)

目前尚不清楚,因为你没有告诉我们x.Numbers是什么,但如果第一段代码确实给你List<int[]>,那么它可能就像这样简单:

List<int> A = ServiceItems.First()
                          .ServiceItemDetails
                          .Select(x => x.Numbers)
                          .ToList();

如果是这种情况,并且x.Numbers确实 是一个int,那么建议您重新命名,如果可以的话 - 它当前声音就像一组数字。

答案 1 :(得分:4)

难道你不能拿出阵列部分吗?

List<int> A = ServiceItems.First().
    ServiceItemDetails.Select(x => x.Numbers).ToList();

答案 2 :(得分:0)

尝试

List<int> A = ServiceItems.First().ServiceItemDetails.SelectMany(x => x.Numbers).ToList();

SelectMany()的行为类似于Select(),但具有“展平”生成的集合集合的效果。

答案 3 :(得分:0)

你的意思是你想将整数数组列表展平成一个整数列表吗?没有任何额外的排序/过滤/等。你可以使用.SelectMany()。像这样:

var integers = ServiceItems.First().ServiceItemDetails.SelectMany(s => s.Numbers);

答案 4 :(得分:0)

我认为你只需要一个SelectMany来整理你的整数列表......

List<int[]> A = ServiceItems.First().ServiceItemDetails.SelectMany(x => x.Numbers).ToList();

答案 5 :(得分:0)

List<int[]> A = ServiceItems.First().ServiceItemDetails.Select(x => x.Numbers).ToList();

您不需要初始化int,因为您可以通过执行new int{...}来初始化类。 int是一种值类型,您可以直接为其分配值。