0

私はこの機能を持っています:

ObservableCollection<TankstellenItem> completeList = new ObservableCollection<TankstellenItem>();
        for(var j = 0; j < listItem.Count; j++)
        {
            foreach (FuelItem fItem in listItem.ToList()[j].Fuels)
            {
                Debug.WriteLine("HERE AGAIN: " + fItem.Price);
                TankstellenItem newItem = new TankstellenItem();
                ObservableCollection<FuelItem> fuelList = new ObservableCollection<FuelItem>();
                newItem = listItem.ToList()[j];
                newItem.Fuels = null;
                fuelList.Add(fItem);
                newItem.Fuels = fuelList;
                completeList.Add(newItem);
                Debug.WriteLine("PRICES: " + completeList.ToList()[0].Fuels[0].Price);
            }
        }
        Debug.WriteLine("COMPLETELIST LENGTH: " + completeList.ToList()[0].Fuels[0].Price + " + " + completeList.ToList()[1].Fuels[0].Price);

結果は次のとおりです。

LISTITEM LENGTH: 1
HERE AGAIN: 1,699
PRICES: 1,699
HERE AGAIN: 1,529
PRICES: 1,529
COMPLETELIST LENGTH: 1,529 + 1,529

foreachでわかるように、価格は異なります。しかし、for-methodの後、出力はすべてのアイテムでわずか1,529です。なぜこれが起こるのかわかりません。

4

2 に答える 2

0

コードからわかることから、Fuel元のリスト()の各TankstellenItemからすべてのオブジェクトを取得し、listItemそれらをObservableCollectionに配置する必要があります。

 // Create Complete List
 ObservableCollection<TankstellenItem> completeList = new ObservableCollection<TankstellenItem>();
 // Loop through each TankstellenItem in listItem
 foreach(TankstellenItem tItem in listItem) {
      // Create an ObservableCollection to store FuelItem objects
      ObservableCollection<FuelItem> fuelList = new ObservableCollection<FuelItem>();
      // Loop through each FuelItem in the current TankstellenItem
      foreach(FuelItem fItem in tItem) {
           // Add the FuelItem from current TankstellenItem to the ObservableCollection
           Debug.WriteLine("HERE AGAIN: " + fItem.Price);
           completeList.Add(new TankstellenItem() {
                // Add the FuelItem
                Fuels = new ObservableCollection<FuelItem>() { 
                     fItem,
                };
           }
      }

 }

ただし、sだけを気にする場合FuelItemは、FuelItemsをの中にラップするのではなく、それらのコレクションを用意する方が簡単な場合がありますTankstellenItem

 ObservableCollection<FuelItem> completeList = new ObservableCollection<FuelItem>();
 foreach(TankstellenItem tItem in listItem) {
      foreach(FuelItem fItem in tItem) {
           completeList.Add(fItem);
      }
 }
于 2012-11-14T13:30:35.417 に答える
0

Linqはこれを簡単にするかもしれません:あなたは実際に欲しいですか

var completelist=listItem.SelectMany(
       i=>i.Fuels.Select(
          f=>new TankstellenItem { Fuels=new ObservableCollection<FuelItem>(new[] { f})}
       )
   ).ToList();
于 2012-11-14T14:31:54.303 に答える