提问人:user6703592 提问时间:8/23/2016 最后编辑:Gilad Greenuser6703592 更新时间:8/23/2016 访问量:2377
在 C# LINQ 中反向查询列表
Reversely query the List in 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();
}
我想查询,但有一些错误,它说:reversely
List
.Reverse()
运算符 '.' 不能应用于 'void' 类型的 oprand。
甚至我创建了一个中间变量List<double> Reversevector = vector.Reverse().ToList();
那么正确的使用方法是什么呢?.Reverse()
linq
答:
5赞
diiN__________
8/23/2016
#1
像这样使用它,如 List<T>。Reverse()
不返回新列表:
vector.Reverse();
return vector.Skip(firstidx)
.Take(Z)
.Select(i => vector.Select(j => j != 0? i / j : 0.0).ToList())
.ToList();
评论
2赞
Adil Mammadov
8/23/2016
请更正。正如你所说,它不会返回..Select(i => vector.Reverse().Select(j => j != 0? i / j : 0.0).ToList())
List
0赞
diiN__________
8/23/2016
@AdilMammadov 哦,没看到他用了两次。
9赞
Hari Prasad
8/23/2016
#2
问题是您使用的是 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();
0赞
Pratap Bhaskar
8/23/2016
#3
将列表复制到局部变量,或创建类似于下面的扩展方法并修改代码。
public static IEnumerable<T> Reverse<T>(this IEnumerable<T> source)
{
var reversedList = source.ToList();
reversedList.Reverse();
return reversedList;
}
评论