首先,我道歉,因为我觉得我应该可以通过Google找到这个,但我似乎无法,很可能是因为我的搜索条件过于笼统(或者我只是不知道该怎么做寻找)。
假设:
int[] numbers = {0, 1, 2, 3, 4, 5};
var selectedNumbers = from n in numbers
where n > 2
select n;
什么是var,假设选择了多个元素?
澄清:我应该将哪种对象类型视为?它有不止一个元素,暗示某种类型的集合(我猜它被视为某种类型的接口......?)但我不确定是什么所以我可以在代码中正确使用它。
或者(尽管我仍然希望知道第一部分出于简单的好奇心),有没有一种方法可以将它转换为普通的集合,例如List<int>
?
答案 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();