LINQ选择多个项目存储类型

时间:2012-08-21 13:55:13

标签: c# linq

首先,我道歉,因为我觉得我应该可以通过Google找到这个,但我似乎无法,很可能是因为我的搜索条件过于笼统(或者我只是不知道该怎么做寻找)。

假设:

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

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

什么是var,假设选择了多个元素?

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

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

4 个答案:

答案 0 :(得分:2)

简单:IEnumerable<int>

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

答案 1 :(得分: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();

答案 2 :(得分:2)

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

答案 3 :(得分:1)

这将是IEnumerable<int>

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

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