Linq c# запрос, чтобы соединить два отношения многие ко многим - PullRequest
0 голосов
/ 07 февраля 2020

здесь у меня есть группа, содержащая много пользователей и активов, я хочу, чтобы список активов был связан с одним пользователем. Каков наилучший способ использования linq.

 public class Asset
    { 
        public Guid Id { get; set; }
        public virtual ICollection<GroupToAssets> GroupToAssets { get; set; }
    }

 public class User: IdentityUser
    {
       public virtual ICollection<GroupToUsers> GroupToUsers { get; set; }
    }

 public class GroupToAssets
    {     
        public Guid GroupId { get; set; }
        public virtual Group Group { get; set; }
        public Guid AssetId { get; set; }
        public virtual Asset  Asset { get; set; }
    }

 public class GroupToUsers
    {   
        public Guid GroupId { get; set; }
        public virtual  Group Group { get; set; }
        public string UserId { get; set; }
        public virtual User User { get; set; }
    }

1 Ответ

0 голосов
/ 13 февраля 2020

Я думаю, что следующий linq удовлетворит мой случай, не знаю, есть ли лучший метод

   var Groups =
 await _Context.Groups.Where(x => x.GroupToUsers.Any(d => d.UserId == UserId && d.GroupId == x.Id)).ToListAsync();
    var assets =
 await _Context.GroupToAssets.Where(x => Groups.Contains(x.Group)).Select(x => new { x.Asset }).Distinct().ToListAsync();
...