タイトルよりもコードから何をしたいのかがより明確になることを願っています。基本的に、私は 2 つのフィールドでグループ化しており、結果を Map フェーズで構築されたすべての ProductKey のコレクションに減らしたいと考えています。
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 (?) で初期化しようとしているソース コード ダンプが表示されます。
ProductKey を IEnumerable ProductIds だけに置き換えようとすると (コードに適切な変更を加えます)。その後、コードは実行されますが、reduce で結果が得られません。