Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ选择多个项目存储类型_C#_Linq - Fatal编程技术网

C# LINQ选择多个项目存储类型

C# LINQ选择多个项目存储类型,c#,linq,C#,Linq,首先,我道歉,因为我觉得我应该可以通过谷歌找到这个,但我似乎找不到,很可能是因为我的搜索词太笼统,或者我不知道该找什么 鉴于: int[] numbers = {0, 1, 2, 3, 4, 5}; var selectedNumbers = from n in numbers where n > 2 select n; 如果选择了多个元素,那么var是什么 澄清:我应该将其视为什么对象类型?它有不

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

鉴于:

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

var selectedNumbers = from n in numbers
                      where n > 2
                      select n;
如果选择了多个元素,那么var是什么

澄清:我应该将其视为什么对象类型?它有不止一个元素,这意味着某种类型的集合,我猜它被视为某种类型的接口。。。?但我不确定到底是什么让我可以在代码中正确使用它

或者,尽管出于好奇,我仍然想知道第一部分,但有没有好方法将其转换为常规集合,例如列表?

简单:IEnumerable

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

它是IEnumerable。以下代码等效:

IEnumerable<int> selectedNumbers =
     from n in numbers
     where n > 2
     select n;
您也可以在一行中执行这两个操作:

List<int> list = numbers.Where(n => n > 2).ToList();
这将是数不清的

要转换为列表,只需对SelectedNumber使用ToList扩展方法

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

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

这听起来像是家庭作业……不是!遗憾的是,我已经完成了我唯一的C类课程。我编写这个代码是为了自动化我的D&D DM的一个交易小游戏,这是他提出的,但是如果他通过笔、纸和计算器来完成的话,这将需要极大的努力。我听说过Linq,所以我试着在编写他的小游戏的时候,把它和坚实的原则一起教给自己。哦,我和你都知道它是什么,抱歉,提示,粗体字母的拼写是什么。嘿,我完全明白为什么听起来像家庭作业。不过,如果我能把一些桌面游戏冒充大学学分,那就太棒了。我知道你的感受,我的朋友和我要做一个游戏:这不是一个IQueryable而不是IEnumerable吗?虽然他们确实倾向于彼此合作,但当LINQ参与进来时,我从来没有真正了解到他们之间的区别。很多答案都非常快!然而,这似乎是最好的一个。谢谢你,马克;你把这两个问题都处理得非常干净和清楚。@Flater不,这不是一个可解决的问题。源是一个数组,它实现IEnumerable而不实现IQueryable。如果源代码是某种类型的数据库上下文,那么它可能会实现IQueryable,然后使用Where的重载。啊哈,今天我学到了一些东西,感谢您的解释+1对你,好先生:-这适用于var的任何使用。
List<int> listOfNumbers = selectedNumbers.ToList();