2

顧客オブジェクトのリストがあります (例: 顧客のリスト)

 public class Customer
    {
        public int ID { get; set; }
        public string City { get; set; }
        public bool DidLive { get; set; }
    }

私がする必要があるのは、この「顧客」コレクションをdictionary次のように変換することです。

"Dictionary<int, Dictionary<string, bool>> " ここで、外側のキーは「ID」で、内側のキーは「City」です。

"GroupBy"または"ToDictionary"拡張メソッドを使用してこれを行うことはできます"IEnumerable<T>"か?

4

2 に答える 2

4

ここでは、IDが同じで都市が異なる複数のCustomerオブジェクトがあると想定しています(そうではなく、内部ディクショナリに常に1つのアイテムが含まれる場合は、@ oleksiiの回答を参照してください)。

var result = customers.GroupBy(c => c.Id)
                      .ToDictionary(group => group.Key,
                                    group => group.ToDictionary(c => c.City, 
                                                                c => c.DidLive));

もちろん、同じID都市を持つ複数の顧客がいる場合、これは例外をスローします。

于 2012-08-14T16:54:13.923 に答える
1

それが出発点です

var data = new List<Customer>();

data.ToDictionary(item => item.ID, 
                    item => new Dictionary<string, bool>
                    {
                        {item.City,item.DidLive}
                    });
于 2012-08-14T16:54:33.263 に答える