2017-05-08 13 views
-2

ユーザーからプレーヤーの詳細を読み取り、Playerクラスオブジェクトに割り当てます。オブジェクトを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を修正するために改訂されました実際に何かを試してみました。その結果 – TheLethalCoder

+1

考えてみてください... 100人のプレーヤーの名前に反するIEnumerableを考えてみてください。あなたはそれの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; 

。リストを取得するには、このように使用する必要があります。代わりに(Playerオブジェクトを選択)を選択し、tの

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

次に、これをライン形式でどのように出力しますか? – Gayathri

+0

これを試してください。 (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.PlayerNameを選択します。 PlayerNameプロパティのIEnumerableを返します。後でこのIEnumerableをループして文字列を表示することができます。

+0

正常に印刷されますが、最後に若干の例外が表示されます – Gayathri

+0

未処理例外:System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません at Program。 – Gayathri

+0

m__0(.Player t)[0x00000] in:0 、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の結果は、常にLookを使用したりDistinctなどのメソッドを呼び出すときに実行される式です。あなたの場合でも、同じ理由でIteratorが表示されています。

変更してコードを少し

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:オブジェクト参照がオブジェクトのインスタンスに設定されていません at Program。 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

関連する問題