2012-04-13 10 views
0

私と私はLINQクエリを使用して、そのテーブルのデータにアクセスしようとしています。この中で、当社 という名前のひとつのテーブルがは、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>(); 

のような会社Calssに変換していますが、それは次のようにエラーが発生しますToListメソッド()いくつかの無効な引数 がどのようでColumnNameには、リスト形式のデータ事前に

Thaks

+0

オブジェクトはもはやCompanyクラスのインスタンスであるので、その場合は、あなたは、varキーワードを使用する必要がありますどのテーブル?あなたは "DataTable"クラスを意味しますか? –

+0

他の人が指摘するように、本当の鍵は、これが機能するために 'select new Company {}'を明示的にコーディングすることです。 –

+0

はい、しかしもう1つの目的は、新しい選択の後に異なる列名を付けて、依然として会社タイプにすることです。私はそれが可能ではないと思う。 – Marshal

答えて

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

私は」あなたの思いを得る与えることができていますこの探しRE:つまり

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

、あなたのコードはanonymous typeをインスタンス化されますが、当社オブジェクトのリストを作成しようとしています。したがって、代わりにCompanyオブジェクトをインスタンス化します。

ただし、Companyオブジェクトの別のセットからコピーされたプロパティを持つ新しいCompanyオブジェクトのセットを作成する必要はありません。それが本当ならば、あなたはこの行うことができます:あなたは、異なるプロパティに名前を付ける必要がある場合は

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

を、あなたは匿名型を使用するのが正しいです。

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

たとえば、彼が 'NewCompany = c.CompanyName'を割り当てたとしたら、それはうまくいかないと思います。データベースと同じ名前でなければなりません。異なる列名を与えるためのソリューション? – Marshal

+0

このクエリでは、エラーを生成する列に別の名前を付けるときに、テーブルフィールドの列と同じ名前を付ける必要があります – vipul

+0

はい、私は尋ねました。 – Marshal

1

あなたがたDataTableに意味なら、あなたが行うことができます:

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(); 
関連する問題