4

レポートの目的で、発注書のリストを複数のリストに分割したいと思います。購入先住所ごとに1つのリスト。リストを購入アドレスでグループ化することは可能ですが、私の質問は、この購入アドレスでリストを複数のリストに分割し、これらの複数のリストを使用して個別のレポートファイルを作成する方法です。

コード:

(from o in orders
group o by new {field1, field2, field3, field4} into og
orderby og.Key.field1
select new ViewClass
{
    purchaseAddress = og.Key.field1,
    product = og.key.field2,
    count = og.count
}).ToList()

質問:上記のリストをpurchaseAddressごとに複数のリストに分割する方法は?

4

3 に答える 3

11

私が思うにあなたが望むことをする組み込み関数があります。あなたのコードがという変数に割り当てられていると仮定すると、次のqueryように書くことができます。

ILookup<string, ViewClass> queryLists = query.ToLookup(x => x.purchaseAddress);

これにより、基本的に、辞書のようにアクセスするリストのリストが作成されます。ただし、各値は0個以上の値のリストです。何かのようなもの:

IEnumerable<ViewClass> someList = queryLists["Some Address"];
于 2012-06-10T04:07:55.887 に答える
2

各グループをリストに変えるだけです。

select new ViewClass 
{ 
    purchaseAddress = og.Key.field1, 
    product = og.key.field2, 
    count = og.count,
    List = og.ToList()
}).ToList();

ああ、あなたのグループ化はエンティティのための1つの方法であり、ページのための別の方法です...ただ再グループ化してください。

List<ViewClass> classes = (
  from o in orders   
  group o by new {field1, field2, field3, field4} into og   
  orderby og.Key.field1   
  select new ViewClass   
  {   
    purchaseAddress = og.Key.field1,   
    product = og.key.field2,   
    count = og.count   
  }).ToList();

List<List<ViewClass>> regrouped = (
  from c in classes
  group c by c.purchaseAddress into g
  select g.ToList()
).ToList();
于 2012-06-10T01:32:03.777 に答える
0

使用できるもう1つの単純な組み込み関数は、GroupBy関数です。ToLookupと同様の機能を果たしますが、新しいリストがIQuerableであり、辞書やその他のいくつかのものとは異なります(詳細については、この記事を参照してください)。

var newList = orders.GroupBy(x => x.field1);

これにより、指定したフィールドごとにグループ化されたリストのリストが返されます。

于 2015-06-30T05:23:21.257 に答える