索引在数组边界之外,不可复制



我在实时产品上得到这个错误,并且我看到它发生在列表SelectMany的最后一行,但是我根本无法重现它。我尝试了不同的场景,但都是徒劳的。知道为什么会出现异常吗?

堆栈跟踪:

at System.Collections.Generic.List'1.Enumerator.MoveNext()
at System.Linq.Enumerable.d_17'2.MoveNext()
at System.Linq.Enumerable.d_64'1.MoveNext()在System.Collections.Generic.List"1 . .
at System.Linq.Enumerable。ToList [TSource] (IEnumerable ' 1源)

我代码:

public List<int> GetCategories(SelectQuery query, List<Product> products)
{
var filteredQuery = query.FilterItems.Where(f => f.Type != Type.Category);
var filteredproducts = products
.Where(x => x.Data != null &&
x.Data.Category.Any() && filteredQuery.ApplyFilter(x)).ToList();
return filteredproducts.SelectMany(x => x.Data.Category).Distinct().ToList();
}

当你使用Where include . first()或. firstordefault()作为Where子句返回null,因此它落在下一部分后

您应该在SelectMany.之前在Where中添加x => x.Data.Category != null

最新更新