Linq 不包含';如果没有值,则不创建键

Linq 不包含';如果没有值,则不创建键,linq,linq-to-entities,Linq,Linq To Entities,我有两种类型User和Area public class User : IEntity { public int UserId { get; set; } public string Username { get; set; } public int AreaId { get; set; } public string CreatedByUserName { get; set;

我有两种类型
User
Area

    public class User : IEntity
        {
            public int UserId { get; set; }
            public string Username { get; set; }
            public int AreaId { get; set; }
            public string CreatedByUserName { get; set; }
            public DateTime CreatedDateTime { get; set; }
            public string LastModifiedByUserName { get; set; }
            public DateTime? LastModifiedDateTime { get; set; }


        }

        public class Area : IEntity
            {
                public virtual int Id { get; set; }
                public virtual string Name { get; set; }
                public virtual int DefaultAdminId { get; set; }
                public string CreatedByUserName { get; set; }
                public DateTime CreatedDateTime { get; set; }
                public string LastModifiedByUserName { get; set; }
                public DateTime? LastModifiedDateTime { get; set; }

                //Navigation properties
                public virtual ICollection<User> Users { get; set; }
        }
这很好,但是如果
区域
不包含任何
用户
它仍然被放入字典中,这不是我想要的


有没有人能告诉我如何省去不包含任何
用户的
区域

在发送到字典之前,您可以过滤
区域

var dictionary = Areas.Where(s => s.Users.Any()).ToDictionary...

区域中的用户与包含这些用户的AreaId不匹配,这是非常奇怪的,但是:

   var usersByArea = (from area in areas
                      let areaUsers = area.Users.Where(u => u.AreaId == area.Id).ToList()
                      where areaUsers.Count > 0
                      select new
                      {
                          Name = area.Name,
                          Users = areaUsers
                      }).ToDictionary(a => a.Name, a => a.Users);

很好很干净的解决方案,谢谢!
   var usersByArea = (from area in areas
                      let areaUsers = area.Users.Where(u => u.AreaId == area.Id).ToList()
                      where areaUsers.Count > 0
                      select new
                      {
                          Name = area.Name,
                          Users = areaUsers
                      }).ToDictionary(a => a.Name, a => a.Users);