2012-04-13 11 views
0

Ich habe eine Tabelle Firma namens in dieser i die Daten dieser Tabelle zuzugreifen versuchen mit Linq-Abfrage und umgewandelt in Unternehmen Calss wiekonvertieren Daten in zu ToList()

List<Company> companyData = (from c in dataContext.Companies 
     select new 
     { 
      CompanyName =c.CompanyName, 
      Address1 =c.Address1, 
      Addredd2 =c.Address2, 
      city=c.City.CityName, 
      state =c.State.StateName, 
      country =c.Country.CountryName, 
      Telephone1 =c.Telephone1, 
      Telephone2 =c.Telephone2, 
      Mobile1 =c.Mobile1, 
      Mobile2=c.Mobile2, 
      Email1 =c.Email1, 
      Email2 = c.Mobile2, 
      Fax1=c.Fax1, 
      Fax2=c.Fax2, 
      TinNo=c.TinNo, 
      IsGroupCompany=c.IsGroupCompany 
     }).ToList<Company>(); 

aber es gibt Fehler wie ToList() einige ungültigen Argumente hat, wie in den Spalten Daten in List-Format erhalten geben kann

Thaks im Voraus

+0

Welcher Tisch? Meinst du "DataTable" -Klasse? –

+0

Wie andere darauf hinweisen, ist der wahre Schlüssel, dass Sie explizit 'Select new Company {}' codieren, damit dies funktioniert. –

+0

Ja, aber wieder ein anderes Ziel ist es, verschiedene Spaltennamen nach der neuen Auswahl zu geben und es immer noch zum Unternehmenstyp zu machen. Ich denke, das wird nicht möglich sein. – Marshal

Antwort

1
List<Company> companyData = (from c in dataContext.Companies 
      select new Company() { ... }).ToList(); 
3

ich glaube, Ihnen‘ re suchen diese:

List<Company> companyData = (from c in dataContext.Companies select new Company { 
    CompanyName = c.CompanyName, 
    Address1 = c.Address1, 
    Address2 = c.Address2, 
    City = c.City, 
    State = c.State, 
    Country = c.Country, 
    Telephone1 = c.Telephone1, 
    Telephone2 = c.Telephone2, 
    Mobile1 = c.Mobile1, 
    Mobile2 = c.Mobile2, 
    Email1 = c.Email1, 
    Email2 = c.Email2, 
    Fax1 = c.Fax1, 
    Fax2 = c.Fax2, 
    TinNo = c.TinNo, 
    IsGroupCompany = c.IsGroupCompany } 
).ToList(); 

Mit anderen Worten: Ihr Code instanziieren eine anonymous type, aber Sie versuchen, eine Liste von Unternehmen Objekte zu erstellen. Instanziieren Sie daher stattdessen ein Company-Objekt.

Es besteht jedoch die Möglichkeit, dass Sie keine neuen Unternehmensobjekte erstellen müssen, deren Eigenschaften von jedem anderen Satz von Company-Objekten kopiert werden. Wenn das wahr ist, können Sie dies nur tun:

List<Company> companyData = dataContext.Companies.ToList(); 

Wenn Sie die Eigenschaften anders zu nennen, dann sind Sie richtig einen anonymen Typ zu verwenden. In diesem Fall müssen Sie den var Schlüsselwort verwenden, da die Objekte nicht mehr Instanzen der Company Klasse sind:

var companyData = (from c in dataContext.Companies 
    select new 
    { 
     CompanyName =c.CompanyName, 
     Address1 =c.Address1, 
     Addredd2 =c.Address2, 
     city=c.City.CityName, 
     state =c.State.StateName, 
     country =c.Country.CountryName, 
     Telephone1 =c.Telephone1, 
     Telephone2 =c.Telephone2, 
     Mobile1 =c.Mobile1, 
     Mobile2=c.Mobile2, 
     Email1 =c.Email1, 
     Email2 = c.Mobile2, 
     Fax1=c.Fax1, 
     Fax2=c.Fax2, 
     TinNo=c.TinNo, 
     IsGroupCompany=c.IsGroupCompany 
    }).ToList(); 
+0

Ich glaube, das funktioniert nicht, wenn er zum Beispiel 'NewCompany = c.CompanyName 'zuweist. Es muss den gleichen Namen wie in der Datenbank haben. Irgendeine Lösung, um verschiedene Spaltennamen zu geben? – Marshal

+0

In dieser Abfrage muss ich den gleichen Namen der Spalte des Tabellenfeldes geben, wenn der Spalte einen anderen Namen geben Fehler – vipul

+0

Ja, das ist wat ich fragte .. Irgendwelche Vorschläge dafür? – Marshal

1

Wenn Sie Datatable bedeuten, dann können Sie tun:

class Program 
{ 
    static void Main(string[] args) 
    { 
     DataTable table = new DataTable(); 
     table.Columns.Add("name", typeof(string)); 
     table.Columns.Add("address", typeof(string)); 
     table.Rows.Add("name 1", "address 1"); 
     table.Rows.Add("name 1", "address 1"); 

     var query = table.AsEnumerable().Select(s => new Company { Name = (string)s["name"], Address = (string)s["address"] }).ToList(); 
    } 
} 

class Company 
{ 
    public string Name { get; set; } 
    public string Address { get; set; } 
} 
0
try this :- 
List<Company> companyData = (from c in dataContext.Companies 
select new Company 
{ 
     CompanyName =c.CompanyName, 
     Address1 =c.Address1, 
     Addredd2 =c.Address2, 
     city=c.City.CityName, 
     state =c.State.StateName, 
     country =c.Country.CountryName, 
     Telephone1 =c.Telephone1, 
     Telephone2 =c.Telephone2, 
     Mobile1 =c.Mobile1, 
     Mobile2=c.Mobile2, 
     Email1 =c.Email1, 
     Email2 = c.Mobile2, 
     Fax1=c.Fax1, 
     Fax2=c.Fax2, 
     TinNo=c.TinNo, 
     IsGroupCompany=c.IsGroupCompany 
    }).ToList(); 
Verwandte Themen