2015-02-23 4 views
0

У меня есть объект класса игрока, который содержит изображение как одно из его свойств. Я пытаюсь сделать левое присоединение к классу оборудования и левому соединению к социальному классу. Я хочу получить всех игроков, и если у игрока есть экипировка или социальная собственность, установите соответственно, если оборудование или социальное значение равно null, оставьте нулевым, но все же покажите игроку.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

ответ

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; set} и public Social Social {get; задавать; } как свойства внутри класса игрока. Поэтому ключевое слово Any недоступно – Dan

+0

@ Если у вас нет внешних ключей, это будет сложнее. я бы установил их в этом случае ... экономит много работы, как вы можете видеть. –

+0

@Dan О, я вижу, тогда вы можете просто проверить оборудование! = Null и Social! = Null ... edit answer ... –