我希望从代码中我想做什么比标题更清楚。基本上我按 2 个字段分组,并希望将结果减少到一个集合中,所有 ProductKey 在 Map 阶段构建。
public class BlockResult
{
public Client.Names ClientName;
public string Block;
public IEnumerable<ProductKey> ProductKeys;
}
public Block()
{
Map = products =>
from product in products
where product.Details.Block != null
select new
{
product.ClientName,
product.Details.Block,
ProductKeys = new List<ProductKey>(new ProductKey[]{
new ProductKey{
Id = product.Id,
Url = product.Url
}
})
};
Reduce = results =>
from result in results
group result by new {result.ClientName, result.Block} into g
select new BlockResult
{
ClientName = g.Key.ClientName,
Block = g.Key.Block,
ProductKeys = g.SelectMany(x=> x.ProductKeys)
};
}
我得到了一些奇怪的 System.InvalidOperationException 和一个源代码转储,基本上它试图用 int (?) 初始化列表。
如果我尝试仅用 IEnumerable ProductIds 替换 ProductKey(并在代码中进行适当的更改)。然后代码运行,但我没有得到任何减少的结果。