c# 将列表映射到 ILookup<int,tenant>

c# Mapping lists to ILookup<int,tenant>

基于以下类。

    public class User
    {
        public int Id { get; set; }
        public List<TenantUser> TenantUsers { get; set; }
    }


    public class TenantUsers
    {
        public int UserId { get; set; }
        public User User { get; set; }
        public int TenantId { get; set; }
        public Tenant Tenant { get; set; }
    }

    public class Tenant
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public List<TenantUser> TenantUsers { get; set; }
    }

我正在尝试生成一个 linq 查询,它将 return 一个 Lookup<int,Tenant>() int 是来自 TenantUsers 的 userId。

我目前的尝试:

var userIds = new int[] {1, 2,3,5};
var tenantUsers = new List<TenantsUsers>();

var tenants = 
tenantUsers
.Where(m => userIds.Contains(m.UserId))
.ToLookup(x=>x.UserId); 

以上是我的进展情况。这个returnsILookup<int,TenantUsers>我要找ILookup<int,Tenant>();

你必须 select Tenant 这样的结果。

var userIds = new int[] {1, 2,3,5};
var tenantUsers = new List<TenantsUsers>();

var tenants = 
tenantUsers
.Where(m => userIds.Contains(m.UserId))
.ToLookup(x => x.UserId, y => y.Tenant); 

C# Fiddle