WPF C #.поместить наблюдаемую коллекцию в Список <string> - PullRequest
1 голос
/ 27 июля 2011

У меня есть наблюдаемая коллекция, которую я заполняю текстовыми полями при нажатии кнопки.В моем проекте есть один класс, где у меня есть список >> публичный список _RoomNumber = новый список ();я хочу просто отправить значение observablecollection в список _RoomNumber.Например, если observablecollection содержит эти 4 значения: 15, 20, 2323, 3232, я хочу, чтобы контекст _RoomNumber был таким же: 15, 20, 2323, 3232

Надеюсь, мой вопрос понятен.Это моя наблюдаемая коллекция:

  ObservableCollection<CheckInData> _CheckInCollection = new ObservableCollection<CheckInData>();

   public ObservableCollection<CheckInData> CheckInCollection
   {
       get { return _CheckInCollection; }
   }
   public class CheckInData
   {
       public string RoomNumber { get; set; }
       public decimal Price { get; set; }
       public string Currecny { get; set; }
       public decimal Discount { get; set; }
       public string CheckOut { get; set; }
       public int TotalDay { get; set; }
       public decimal TotalPrice { get; set; }
       public int CheckOutYear { get; set; }
       public int CheckOutMonth { get; set; }
       public int CheckOutDay { get; set; }
       public Boolean IncToday { get; set; }
   }

Вот как я пытаюсь внести в список.Проблема в том, что наблюдаемая коллекция содержит 102 и 305. _RoomNumber получает только значение «1».пожалуйста помогите

 private void btnPrintInvoice_Click(object sender, RoutedEventArgs e)
        {
            //This is Class where my List _RoomNumber is 
            DataToExcel.Invoice inv = new DataToExcel.Invoice();
            foreach (CheckInData coll in CheckInCollection)
            {
                for (int i = 0; i < _CheckInCollection.Count; i++) 
                {
                    inv._RoomNumber.Add(coll.RoomNumber[i].ToString());
                }
            }
        }

Ответы [ 3 ]

1 голос
/ 27 июля 2011

Вам нужно сделать небольшую модификацию. Попробуйте это:

private void btnPrintInvoice_Click(object sender, RoutedEventArgs e)
{
        //This is Class where my List _RoomNumber is 
        DataToExcel.Invoice inv = new DataToExcel.Invoice();
        foreach (CheckInData coll in CheckInCollection)
        {                
            inv._RoomNumber.Add(coll.RoomNumber.ToString());                
        }
}

Вам не нужен доступ к RoomNumber с индексом. Это не коллекция.

1 голос
/ 27 июля 2011

Вы можете использовать

var roomnumbers = CheckInCollection.Select(x => x.RoomNumber);
inv._RoomNumber = new List(roomnumbers);

Или, если вы хотите повторно использовать существующий экземпляр List,

inv._RoomNumber.Clear();
inv._RoomNumber.AddRange(roomnumbers);

, но, похоже, это не ваш случай.

Обратите внимание, что в вашем коде ваши внутренние и внешние циклы перебирают одну и ту же коллекцию: -)

0 голосов
/ 20 сентября 2013
using System.Linq;
...

ObservableCollection<string> ListA = new ObservableCollection<string>();

List<string> ListB = ListA.ToList<string>();
...