Выберите различные комбинации значений из двух таблиц - PullRequest
0 голосов
/ 04 мая 2019

У меня есть три таблицы: части , пользователи и организации .Часть имеет внешний ключ для пользователя, а пользователь имеет внешний ключ для организации.Мне нужно найти все различные комбинации user.id и organization.name для всех существующих частей.

Это мой текущий запрос LINQ:

var partUsers = dbContext.Parts
    .GroupBy(p => p.UserId)
    .Select(g => new
    {
        UserId = g.Key,
        OrgName = g.First().Organization.Name
    });

Пока он работает и дает ожидаемый результатон печатает всевозможные предупреждения о возможных непредсказуемых результатах (GroupBy без порядка) и, что самое главное, оценивается локально.Таким образом, этот запрос не может быть переведен в SQL из-за вызова First.

Как получить эффективный результат с LINQ и Entity Framework Core 2.2?Я не хотел бы повторять все детали, потому что это может быть намного больше, чем у пользователей.

Упрощенные классы:

class Part
{
    [Key]
    public int Id { get; set; }

    [ForeignKey(nameof(Organization))]
    public int OrganizationId { get; set; }

    public virtual Organization Organization { get; set; }

    [ForeignKey(nameof(User))]
    public int UserId { get; set; }

    public virtual User User { get; set; }
}

class User
{
    [Key]
    public int Id { get; set; }

    [ForeignKey(nameof(Organization))]
    public int OrganizationId { get; set; }

    public virtual Organization Organization { get; set; }
}

public class Organization
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...