2015-02-23 141 views
0

我有一個播放器類對象,其中包含一個圖像作爲其屬性之一。我正在嘗試左邊加入一個設備班,然後左邊加入一個社會班。我想要檢索所有玩家,如果玩家擁有裝備或社交屬性,則相應地設置,如果裝備或社交爲空,則保留爲空,但仍顯示玩家。Linq多個左外連接與分組

我目前正在獲取「圖像數據類型不能被選爲DISTINCT,因爲它不具有可比性。」錯誤。我試圖做的查詢:

var player = (from p in db.Players 
       join e in db.Equipment on p.PlayerId equals e.PlayerId 
       into playerequipment 
       from d in playerequipment.DefaultIfEmpty() 
       join so in db.Social on p.PlayerId equals so.PlayerId 
       into playersocial 
       from de in playersocial.DefaultIfEmpty() 
       where p.PlayerId == PlayerId 
       group new { p, d, de } by new 
       { 
        Player = p 
       } into x 
       select new 
       { 
        Player = x 
       }); 

感謝

+0

什麼是組的點? – juharr 2015-02-23 14:47:23

回答

1

嘗試使用導航屬性:

var players = db.Players.Where(player=> player.Equipment != null && player.Social != null).ToList(); 

沒有線索,如果您的導航屬性命名,雖然這種方式...檢查你的模型。

如果你想找回它們,無論社會或設備的存在:由

var players = db.Players.Include("Social").Include("Equipment").ToList(); 
+0

感謝您的回覆。我首先使用EF代碼,並具有這樣的外鍵:public Equipment Equipment {get;設置}和公共社會社交{get;組; }作爲播放器類中的屬性。因此Any關鍵字不可用 – Dan 2015-02-23 14:54:46

+0

@Dan如果你沒有外鍵,它會更難。我會在這種情況下設置它們......可以節省很多工作,正如你所看到的。 – 2015-02-23 14:57:12

+0

@丹哦,我看到那麼你可以檢查設備!= null和社會!=空...編輯答案... – 2015-02-23 14:59:44