反向查询C#LINQ中的List

use*_*592 4 c# linq

List<List<double>> Return(List<double> vector, int Z, int firstidx)
{            
    return vector.Reverse()
                 .Skip(firstidx)
                 .Take(Z)
                 .Select(i => vector.Reverse().Select(j => j != 0? i / j : 0.0).ToList())
                 .ToList();
}
Run Code Online (Sandbox Code Playgroud)

我想reversely查询List但是有一些错误.Reverse(),它说:

接线员'.' 不能应用'void'类型的oprand.

即使我创建了一个中间变量 List<double> Reversevector = vector.Reverse().ToList();

那么正确的使用方法.Reverse()linq什么?

Har*_*sad 7

问题是你使用的List.Reverse()方法不是 Enumerable.Reverse()

你有两个选择,要么将其称为静态方法,要么将其称为显式转换.

Enumerable.Reverse(vector)
          .Skip(firstidx)
           .Take(Z)
           .Select(i => Enumerable.Reverse(vector).Select(j => j != 0? i / j : 0.0).ToList())
           .ToList(); 
Run Code Online (Sandbox Code Playgroud)


dii*_*___ 5

像这样使用它,因为List<T>.Reverse()不会返回新列表

vector.Reverse();
return vector.Skip(firstidx)
             .Take(Z)
             .Select(i => vector.Select(j => j != 0? i / j : 0.0).ToList())
             .ToList();
Run Code Online (Sandbox Code Playgroud)

  • 请更正 `.Select(i =&gt; vector.Reverse().Select(j =&gt; j != 0? i / j : 0.0).ToList())`。正如您所说,它不会返回“List”。 (2认同)