Если у вас есть сопоставления, все должно быть легко без каких-либо объединений:
from test in tests
let count = test.Quests.Count()
orderby count descending
select
new
{
test.Id,
TestData =
test.Subject == null
? null
: string.Format("{0} >> {1} ({2})", test.Subject.Name, test.Name, count)
};
РЕДАКТИРОВАТЬ: Прочитав ответ Томаса Левеска, я понял, что это не сработает, носледует следующее:
var query = from test in tests
let count = test.Quests.Count()
orderby count descending
select
new
{
test.Id,
test.Name,
test.Subject,
Count = count
};
var results = query
.AsEnumerable()
.Select(
t =>
new
{
t.Id,
TestData =
t.Subject == null
? null
: string.Format("{0} >> {1} ({2})", t.Subject.Name, t.Name, t.Count)
});
results.Dump();
}