我一直在我的一個網站上使用LINQ to SQL一段時間,隨着時間的推移,我用來查詢數據庫的代碼變得有點混亂,寫,原來我的查詢全部由Linq處理,但是最近需要更高級的搜索功能,這導致我更多地使用ExecuteQuery並手寫我的SQL語句,問題是我無法爲我的生活獲取Join聲明正常工作。使用JOIN與LINQ到SQL ExecuteQuery問題
我在我的數據庫中有兩個表,t_events和t_clients。兩張表之間唯一相似的地方是它們都有一個clientid字段(事件客戶端的id)。我需要能夠做的是將所有事件拉入頁面(這可以正常工作),但我不想在顯示客戶端名稱的頁面上顯示clientid。本來我有很好的處理了這個連接子句:
var eve = from p in db.t_events
join c in db.Clients on p.clientid equals c.clientid
where p.datedue <= thisDay && p.status != "complete"
select new { p.eventname, p.datedue, p.details, p.eventid, p.status, c.clientname };
隨着然而我有什麼重建LINQ已與加盟這裏做的問題頁面的重新設計。我當前的代碼:
StringBuilder sqlQuery = new StringBuilder("SELECT * FROM dbo.t_events JOIN dbo.t_clients ON dbo.t_events.clientid=dbo.t_clients.clientid");
var query = db.ExecuteQuery<t_events>(sqlQuery.ToString());
foreach (var c in query)
{
counter = counter + 1;
MyStringBuilder.Append("<tr class='"+c.status+"'><td><a href='searchdetails.aspx?id="+c.eventid+"'>"+c.eventname+"</a></td><td>" +c.clientname+ "</td></tr>");
}
在foreach循環中我可以看到我想在c.clientname拉(其中不工作),因爲它是不t_events數據庫,改變這c.clientid品牌代碼的工作,我不知道是什麼問題,因爲採取相同的SQL和直接運行查詢SQL管理工具就像一個魅力。任何關於這個問題的想法將不勝感激!
固定!
DaveMarkle建議使用視圖,這是迄今爲止更簡單的方法。我創建了一個視圖,將這兩個表連同我需要的字段一起加入,並對其執行查詢,簡單而有效,謝謝!
我知道這並不直接回答你的問題,但我個人傾向於退出使用這種ExecuteQuery。相反,我會創建一個視圖並將其綁定到該視圖。 –
@DaveMarkle我原本以爲這樣想,但問題是,有幾百個查詢組合,這是什麼原本讓我更加朝着ExecuteQuery – Gordnfreeman
我採取了回來,有一個腦屁一時,也許我想到存儲過程,工作,並更容易,然後我會預期... – Gordnfreeman