I have 2 classes which have some identical properties. I stock into a list properties from 1st class, and after that, I want to take some needed properties and put them into a list of 2nd class type. I've made cast sequence through C# and that runs OK, but I must do with LINQ. I tried to do something but without good results. Help me please with suggestions.
1st Class:
public class ServiceInfo { private long _id; public long ID { get { return this._id; } set { _id = value; } } private string _name; public string Name { get { return this._name; } set { _name = value; } } private long _qty; public long Quantity { get { return this._qty; } set { _qty = value; } } private double _amount; public double Amount { get { return this._amount; } set { _amount = value; } } private string _currency; public string Currency { get { return this._currency; } set { _currency = value; } } private DateTime? _date; public DateTime? Date { get { return this._date; } set { _date = value; } } }
2nd Class:
class InvoiceWithEntryInfo { private string currencyField; private long IdField; public long IdIWEI { get { return this.IdField; } set { IdIWEI = value; } } private string nameField; public string NameIWEI { get { return this.nameField; } set { NameIWEI = value; } } private long qtyField; public long QuantityIWEI { get { return this.qtyField; } set { QuantityIWEI = value; } } private double amountField; public double AmountIWEI { get { return this.amountField; } set { AmountIWEI = value; } } private DateTime dateField; public DateTime? DateIWEI { get { return this.dateField; } set { DateIWEI = value; } } public string OwnerIWEI { get; set; } }
C# sample which runs OK: ...
var sil = new List<ServiceInfo>(); var iweil = new List<InvoiceWithEntryInfo>();
...
if (sil != null) { foreach (ServiceInfo item in sil) { iweil.Add(new InvoiceWithEntryInfo { IdIWEI = item.ID, AmountIWEI = item.Amount, DateIWEI = item.Date }); }
LINQ sample which doesn't run OK:
iweilCOPY = sil.ConvertAll<InvoiceWithEntryInfo>(a => (InvoiceWithEntryInfo)a); iweilCOPY = sil.FindAll(a => (sil is InvoiceWithEntryInfo)).ConvertAll<InvoiceWithEntryInfo>(a => (InvoiceWithEntryInfo)a);
var iweilCopy = sil.Select(item => new InvoiceWithEntryInfo() { IdWEI = item.Id, NameWEI = item.Name, .... }).ToList();
var iweil = sil.Select(item=> new InvoiceWithEntryInfo { IdIWEI = item.ID, AmountIWEI = item.Amount, DateIWEI = item.Date}).ToList();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With