Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using LINQ to convert List<U> to List<T>

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); 
like image 620
mihai Avatar asked Aug 16 '11 08:08

mihai


2 Answers

var iweilCopy = sil.Select(item => new InvoiceWithEntryInfo() {   IdWEI = item.Id,   NameWEI = item.Name,   .... }).ToList(); 
like image 179
vc 74 Avatar answered Oct 12 '22 02:10

vc 74


  var iweil = sil.Select(item=> new InvoiceWithEntryInfo {                  IdIWEI = item.ID,                  AmountIWEI = item.Amount,                  DateIWEI = item.Date}).ToList(); 
like image 43
Bob Vale Avatar answered Oct 12 '22 00:10

Bob Vale