LINQ to Entities - «Включение» сложного объекта при группировке - PullRequest
1 голос
/ 02 декабря 2009

У меня есть набор задач, которые мне нужно выбрать отдельно (сгруппировать в L2E). Эти задачи имеют ссылочное свойство «Активность», которое мне нужно загрузить, чтобы я мог ссылаться на объект task.Activity. В первом примере ниже, это работает отлично. Однако, когда я группирую по описанию, действие не загружается. Чего мне не хватает?

tasks = 
    (from x in Db.Task.Include("Activity") select x)
    .ToList();

tasks =
    (from x in Db.Task.Include("Activity")
     group x by x.Description
     into groupedByDescription
         select groupedByDescription.FirstOrDefault()).ToList();

Ответы [ 2 ]

2 голосов
/ 02 декабря 2009

groupedByDescription не является юридическим лицом; это группа лиц. Вы можете Include только при выборе объекта.

Более подробная информация в этом совете .

Трудно найти обходной путь, не зная, какую проблему вы пытаетесь решить.

0 голосов
/ 26 мая 2010

Я хотел бы изложить вопрос, потому что, по-моему, на этот вопрос не было ответа.

На основе примера отсюда: IQueryable> prodQuery = из прод в дб. группировать по prod.CategoryID в группировку выберите группировку;

foreach (IGrouping<Int32, Product> grp in prodQuery)
{
    Console.WriteLine("\nCategoryID Key = {0}:", grp.Key);
    foreach (Product listing in grp)
    {
        Console.WriteLine("\t{0}", listing.ProductName);
    }
}

Если таблица Product имеет отношение внешнего ключа с таблицей T_Category, единственный способ получить доступ к категории - через db.Product.T_Category.CategoryID. Если это так, будет ли включенная работа иметь возможность получить другую информацию в T_Category, такую ​​как T_Category.CategoryName?

IQueryable> prodQuery = из prod в db.Products.include ("T_Category") группировать prod по prod.T_Category.CategoryID в группировку выберите группировку;

foreach (IGrouping<Int32, Product> grp in prodQuery)
{
    Console.WriteLine("\nCategoryID Key = {0}:", grp.Key);
    foreach (Product listing in grp)
    {
        Console.WriteLine("\t{0}", listing.ProductName);
        Console.WriteLine("\t{0}", listing.T_Category.CategoryID);
        Console.WriteLine("\t{0}", listing.T_Category.CategoryName);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...