Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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-在IEnumerable中选择第二项_C#_Linq_.net 3.5_C# 3.0 - Fatal编程技术网

C# LINQ-在IEnumerable中选择第二项

C# LINQ-在IEnumerable中选择第二项,c#,linq,.net-3.5,c#-3.0,C#,Linq,.net 3.5,C# 3.0,我有 string[]pkgratio=“1:2:6” 我想选择中间值,并得出了这个结论。这是在IENumber表中选择第二个值的正确方法吗 pkgratio.Skip(1).Take(1).First(); 虽然您所做的工作正常,但最直接的方法是使用数组的索引并引用第二项(在索引1处,因为第一个元素的索引从零开始):pkgratio[1] Console.WriteLine(pkgratio[1]); 一个更完整的示例: string[] pkgratio = "1:2:6".Split(

我有

string[]pkgratio=“1:2:6”

我想选择中间值,并得出了这个结论。这是在IENumber表中选择第二个值的正确方法吗

pkgratio.Skip(1).Take(1).First();

虽然您所做的工作正常,但最直接的方法是使用数组的索引并引用第二项(在索引1处,因为第一个元素的索引从零开始):
pkgratio[1]

Console.WriteLine(pkgratio[1]);
一个更完整的示例:

string[] pkgratio = "1:2:6".Split(':');

for (int i = 0; i < pkgratio.Length; i++)
    Console.WriteLine(pkgratio[i]);
这是一个
IEnumerable
示例。请注意,
AsEnumerable()
调用是为了强调示例针对
IEnumerable
工作。实际上,您可以对
拆分
字符串[]
数组结果使用
ElementAt
,但是使用前面显示的索引器更有效

var pkgratio = "1:2:6".Split(':').AsEnumerable();
Console.WriteLine(pkgratio.ElementAt(1));
pkgratio.ElementAt(1)用于您的场景

但是,您的方法仅适用于使用实现了
IQueryable
的某些数据或需要从特定索引开始获取一系列项目的情况,例如:


pkgratio.Skip(5)、Take(10)

我认为你不需要
。取(1)

嗯,
Take(1)
并不是严格意义上的必要条件,如果你只想
First()

pkgratio.Skip(1).First();

但是,如果没有值,
First()
将抛出异常,因此您可能希望尝试
FirstOrDefault()
,然后检查null。

与我的第一个问题相关:使用
First()
意味着您确信某个项目将实际位于您尝试访问的位置。如果有任何疑问,您可能希望使用
FirstOrDefault()
。与Linq合作多年,从未使用过ElementAt()。忙着写一些测试,需要它。很好的简单答案这里相同,ElementAt为+1,现在也使用ElementAtOrDefault
var pkgratio = "1:2:6".Split(':').AsEnumerable();
Console.WriteLine(pkgratio.ElementAt(1));
pkgratio.Skip(1).First()
pkgratio.Skip(1).First();