开发者

WPF C#. put observablecollection into List<string>

I have observablecollection which i fill with textboxes on button click event. In my Project is one class where i have list >> public List _RoomNumber = new List(); i want to just send observablecollection value into _RoomNumber list. For example if observablecollection cotains this 4 values : 15, 20, 2323, 3232 i want _RoomNumber context be same so this : 15, 20, 2323, 3232

I hope my question is clear. This my observablecollection :

  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; }
   }

this is how im trying to put in list. Problem is that observablecollection contains 102 and 305. _RoomNumber only gets value '1'. please help

 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());
                }
            }
        }


You need to make small modification. Try this:

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());                
        }
}

You don't need to access RoomNumber with index. It is not a collection.


You can use

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

Or if you want to reuse the existing List instance,

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

but this seems to be not your case.

Note that in your code, your both inner and outer loops iterate over the same collection :-)


using System.Linq;
...

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

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜