2016-11-19 3 views
0

私はデータベースからデータを取得し、私のhtmlテーブルに表示しようとしていますが、私はエラーが発生しています。C#どのようにLinqクエリを行う

foreach文は次のようになります。

foreach(PFEvent events in con.PFEvents) 
       {     
        DataRow row = dt.NewRow(); 
        row["Sport"] = events.Sport; 
        row["Description"] = events.Description; 
        row["Date"] = events.Date.ToString(); 
        row["Time"] = events.Time.ToString(); 
        row["Status"] = events.Status;     
        row["Stadium Name"] = from PFStadium in con.PFStadiums 
              join PFEvent in con.PFEvents on PFStadium.Stadium_ID equals events.Stadium_ID 
              select PFStadium.StadiumName; 

        dt.Rows.Add(row); 
       }     

これは、問題のコードである他のすべては、返すように意図されたものを返しながら:

row["Stadium Name"] = from PFStadium in con.PFStadiums 
              join PFEvent in con.PFEvents on PFStadium.Stadium_ID equals events.Stadium_ID 
              select PFStadium.StadiumName; 

このクエリは次のように値を返します。

SELECT [t0].[StadiumName] FROM [dbo].[PFStadium] AS [t0] INNER JOIN [dbo].[PFEvent] AS [t1] ON ([t0].[Stadium_ID]) = @p0 

私はスタジアムの名前を返すことにしましたが、それは私に後退n。どのように私はこれを解決するのですか?あなたが使用することができます

+0

PFEventsとPFStadiumはどのような種類のオブジェクトですか? – McNets

+0

'row [" Stadium Name "] = from PFStadium ...'クエリは(単一の要素を返す場合でも) 'Enumerable'を返します。最初のものを得るために '.First()'または 'ToArray()[0]'を呼び出す – rbm

+0

データコンテキストゲートウェイを通してデータを作成することで呼び出されるテーブルクラスです。 –

答えて

1

(from PFStadium in con.PFStadiums join PFEvent in con.PFEvents on PFStadium.Stadium_ID equals events.Stadium_ID 
             select PFStadium.StadiumName).FirstOrDefault(); 
+0

これは今、ありがとうございますが、どのように機能しましたか?あなたが気にしないか説明していただけますか? –

+0

以前は、IQueryable(またはcon.PFStadiumsに応じてIEnumerable)を返します。 FirstOrDefaultは、基本的にクエリのトップ1を実行します。次のSO投稿にはいくつかの良い情報があります:http://stackoverflow.com/questions/1024559/when-to-use-first-and-when-to-use-firstordefault-with-linqまた、このリンク:http://www.technicaloverload.com/linq-single-vs-singleordefault-vs-first-vs-firstordefault/ – Klinger

0

をそれはあなたの方法のすべての権利ですが、あなたはデータを持っていない、あなたは、データを取得する方法だけIQueryableコマンドがあります。あなたはそう、あなたのデータを取得する必要があります

row["Stadium Name"] = (from PFStadium in con.PFStadiums 
    join PFEvent in con.PFEvents on PFStadium.Stadium_ID equals events.Stadium_ID 
    select PFStadium.StadiumName).ToList(); 

ToList, ToArray, Sum, Count, etcIQueryableインタフェースを返していない全ての方法は、あなたを助けるでしょう。

関連する問題