2 回答
TA贡献1815条经验 获得超13个赞
为什么不只是indexes.Where(i => i < orderedProducts.Count).Select(i => orderedProducts[i]).ToList();
?
TA贡献1757条经验 获得超7个赞
您在测试中错过了一些东西。您说“myProducts.Count总是大于索引列表的最大值”。考虑到您说“ myProducts仅包含2个元素”,这没有任何意义。orderedProducts.Count必须小于6。这就是问题所在。您只需通过比较列表中的索引来提取元素。您可以通过将更多产品添加到列表中来“解决”该问题。
void Main()
{
var indexes = new List<int> { 1, 2, 5, 7, 10 };
var orderedProducts = new List<Product>();
orderedProducts.Add(new Product());
orderedProducts.Add(new Product());
orderedProducts.Add(new Product());
orderedProducts.Add(new Product());
orderedProducts.Add(new Product());
//orderedProducts.Add(new Product());//Add this in and you will see a result at index 5
//orderedProducts.Add(new Product());
//orderedProducts.Add(new Product());//7
//orderedProducts.Add(new Product());
//orderedProducts.Add(new Product());
//orderedProducts.Add(new Product());//10
var myProducts = orderedProducts.Where((pr, i) => indexes.Any(x => x == i)).ToList();
}
public class Product
{
}
取消注释产品,您将获得5个预期结果。基于0的数组上的10的索引。
- 2 回答
- 0 关注
- 138 浏览
添加回答
举报