2

首先,我很抱歉,因为我觉得我应该能够通过谷歌找到这个,但我似乎不能,很可能是因为我的搜索词太笼统了(或者我只是不知道要寻找什么) .

鉴于:

int[] numbers = {0, 1, 2, 3, 4, 5};

var selectedNumbers = from n in numbers
                      where n > 2
                      select n;

如果选择了多个元素,什么是 var?

澄清一下:我应该将它视为什么对象类型?它有不止一个元素,这意味着某种集合(我猜它被视为某种类型的接口......?)但老实说,我不确定是什么,所以我可以在代码中正确使用它.

或者(尽管出于简单的好奇心,我仍然希望知道第一部分),是否有一种将其转换为普通集合的好方法,例如List<int>?

4

4 回答 4

2

简单的:IEnumerable<int>

您实际上应该能够将鼠标悬停在 Visual Studio 中的变量上,工具提示会告诉您它的类型是什么。

于 2012-08-21T13:56:58.220 回答
2

IEnumerable<int>。下面的代码是等价的:

IEnumerable<int> selectedNumbers =
     from n in numbers
     where n > 2
     select n;

要转换为列表,请调用ToList()

List<int> list = selectedNumbers.ToList();

您也可以在一行中执行这两项操作:

List<int> list = numbers.Where(n => n > 2).ToList();
于 2012-08-21T13:57:05.353 回答
2

var是 IEnumerable,因为 from、where 和 select 只是 IEnumerable 扩展方法的语法糖。请注意,如果您枚举selectedNumbers可枚举,它将对每个枚举的数字应用查询。如果您使用ToList方法,您将获得一个包含查询结果的列表。

于 2012-08-21T14:01:04.523 回答
1

会的IEnumerable<int>

要转换为列表,只需ToList()在 selectedNumbers 上使用扩展方法。

List<int> listOfNumbers = selectedNumbers.ToList();
于 2012-08-21T13:57:26.493 回答