2016-11-19 54 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 

我想返回球場名稱,但它給了我一個查詢作爲返回ñ。我如何解決這個問題?

+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(或IEnumerable取決於con.PFStadiums)。 FirstOrDefault基本上在你的查詢上做了一個Top 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, etc所有方法返回不IQueryable界面,會幫助你。