2017-05-08 18 views
-2

從用戶讀取播放器詳細信息並將其分配給播放器類對象。將該對象添加到Player類型的列表中,並寫入一個linq查詢以從列表中檢索玩家名稱。 在LINQ中使用基本的選擇查詢。從用戶處獲得後顯示播放器名稱

Player[] p=new Player[100]; 

for(i=0;i<;i++) { 
    p[i]=new Player(); 
    p[i].PlayerName=Console.ReadLine(); 
} 

Console.WriteLine("Player list:"); 

var pl=from t in p select t; 

// While printing I am getting System.Linq.Enumerable+c__Iterator10`2[Player,Player] 
Console.WriteLine(pl);  
+0

@HimBromBeere說實話他們」我們實際上已經嘗試了一些東西,只是當他們沒有發現時,他們並沒有打擾Google的搜索結果。 – TheLethalCoder

+1

想一想... p1一個IEnumerable約100個玩家的名字。你期望toString的價值是什麼? –

回答

0

消息被打印,因爲由LINQ查詢返回的對象不具有自定義ToString方法。因此,調用Console.WriteLine將只顯示類型名稱。

您可以通過執行打印:

p.ToList().ForEach(Console.WriteLine); 
+2

OP顯然是一個初學者,儘管這是一個愚蠢或偏離主題,但它可能是值得解釋你的答案,所以很清楚究竟發生了什麼。 – TheLethalCoder

+0

@TheLethalCoder我沒有在第一段中提供過解釋嗎? – Sweeper

+0

爲什麼他們的代碼是錯誤的,而不是你的工作方式。 – TheLethalCoder

0
var pl=from t in p select t; 

剛剛返回的查詢。爲了得到清單,你應該像這樣使用。

var pl = (from t in p select t).ToList(); 
+0

然後,我將如何逐行打印此格式? – Gayathri

+0

試試這個, for(int i = 0; i

0
Player[] p=new Player[100]; 

    for(int i=0;i<p.Length;i++) { 
     p[i]=new Player(); 
     p[i].PlayerName="SomeName"; 
    } 

    Console.WriteLine("Player list:"); 

    var pl=from t in p select t.PlayerName; 

    foreach(var name in pl) 
     Console.WriteLine(name); 

代替選擇T(其選擇的選手對象),選擇t.PlayerName。這將返回一個IEnumerable的PlayerName屬性。您可以稍後通過此IEnumerable循環並顯示字符串

+0

它打印正確,但末尾顯示一些異常 – Gayathri

+0

未處理的異常:System.NullReferenceException:未將對象引用設置爲程序中的對象 的實例。 – Gayathri

+0

m__0(.Player t)[0x00000] in:0 at System.Linq.Enumerable + c__Iterator10'2 [Player,System.String] .MoveNext()[0x00000] in:0 at Program.Main(System.String [] args)[0x00000] in:0 – Gayathri

0

LINQ的結果始終是一個表達式,它將在您使用該表達式時執行或者調用Distinct等方法。在你的情況中,你也出於同樣的原因看到一個迭代器。

更改您的代碼有點

var pl=from t in p select t.Name; 

// While printing I am getting 
System.Linq.Enumerable+c__Iterator10`2[Player,Player] 
foreach(var p in p1) 
    Console.WriteLine(p); 

編輯:

你主要進行了修訂,以解決這個問題

int n, i; 
Console.WriteLine("Enter number of players"); 
n = int.Parse(Console.ReadLine()); 

Player[] p = new Player[n]; 

Console.WriteLine("Enter the player names"); 

for (i = 0; i < n; i++) 
{ 
    p[i] = new Player(); 
    p[i].PlayerName = Console.ReadLine(); 
} 

Console.WriteLine("Player list:"); 

var pl = from t in p select t.PlayerName; 
foreach (var name in pl) Console.WriteLine(name); 
+0

它有效,但最後得到異常 – Gayathri

+0

你看到的例外是什麼? – Gururaj

+0

未處理的異常:System.NullReferenceException:對象引用未設置爲程序中對象 的實例。 (System.Linq.Enumerable + c__Iterator10'2 [Player,System.String] .MoveNext()[0x00000] in:0 at Program.Main(System.Phontol.com)中的m__0(.Player t)[0x00000]: String [] args)[0x00000]:0 – Gayathri

相關問題