2013-09-24 26 views
0

我想創建一個包裝從一個數組中選擇多個項目。我在下面的代碼末尾得到結果。不知道我做錯了什麼。如何顯示類的成員

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Tester.cs 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     var customers = new[] 
     { 
      new { CustomerID = 1, FirstName = "Orlando", LastName = "Gee", 
      CompanyName = "A Bike Store" }, 
      new { CustomerID = 2, FirstName = "Keith", LastName = "Harris", 
      CompanyName = "Bike World" }, 
      new { CustomerID = 3, FirstName = "Donna", LastName = "Carreras", 
      CompanyName = "A Bike Store" }, 
      new { CustomerID = 4, FirstName = "Janet", LastName = "Gates", 
      CompanyName = "Fitness Hotel" }, 
      new { CustomerID = 5, FirstName = "Lucy", LastName = "Harrington", 
      CompanyName = "Grand Industries" }, 
      new { CustomerID = 6, FirstName = "David", LastName = "Liu", 
      CompanyName = "Bike World" }, 
      new { CustomerID = 7, FirstName = "Donald", LastName = "Blanton", 
      CompanyName = "Grand Industries" }, 
      new { CustomerID = 8, FirstName = "Jackie", LastName = "Blackwell", 
      CompanyName = "Fitness Hotel" }, 
      new { CustomerID = 9, FirstName = "Elsa", LastName = "Leavitt", 
      CompanyName = "Grand Industries" }, 
      new { CustomerID = 10, FirstName = "Eric", LastName = "Lang", 
      CompanyName = "Distant Inn" } 
         }; 

     var addresses = new[] { 
      new { CompanyName = "A Bike Store", City = "New York", Country = "United States"}, 
      new { CompanyName = "Bike World", City = "Chicago", Country = "United States"}, 
      new { CompanyName = "Fitness Hotel", City = "Ottawa", Country = "Canada"}, 
      new { CompanyName = "Grand Industries", City = "London", Country = "United Kingdom"}, 
      new { CompanyName = "Distant Inn", City = "Tetbury", Country = "United Kingdom"} 
     }; 

     IEnumerable<Names> customerfullName = customers.Select(data => new Names { 
     FirstName = data.FirstName, 
     LastName = data.LastName}); 

     foreach (Names entry in customerfullName) 
     { 
      Console.WriteLine(entry); 
     } 
    } 
} 
    class Names 
    { 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
    } 
} 

Tester.cs.Names是我運行該程序時重複的內容。

+0

需要注意的是你的問題與LINQ –

回答

0

默認的ToString將被使用,用途:

class Names 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    public override string ToString() 
    { 
     return string.Format("{0} {1}", FirstName, LastName); 
    } 
} 

也有可能爲全名稱創建一個額外的屬性

class Names 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    public string FullName 
    { 
     get 
     { 
      return string.Format("{0} {1}", FirstName, LastName); 
     } 
    } 
} 

用法:

foreach (Names entry in customerfullName) 
{ 
    Console.WriteLine(entry.FullName); 
}  
+0

感謝您的糾正。 – Flimbo

1

Console.WriteLine使用object類的ToString方法。默認情況下,顯示類的名稱。

該方法被派生自object的類覆蓋,以顯示他們想要的任何東西。你沒有覆蓋它,所以你得到了默認值。

您可以重現你的問題,沒有LINQ,如下:所以它是用從object默認實現,並打印出它的類型名稱

class Names 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

var name = new Names {FirstName = "John", LastName = "Saunders"}; 
Console.WriteLine(name); // Will display "Tester.cs.Names" 
0

Names類沒有覆蓋了ToString方法。您或者需要覆蓋ToString中的Names以打印出底層字符串,或者需要在您的foreach循環中打印出單個字符串屬性。

+0

無關,你會建議作爲最佳選擇嗎? – Flimbo

+0

@ n00blearner要麼沒關係。嘗試兩個併爲自己做出決定。 – Servy