C# 选择y表中的所有x

C# 选择y表中的所有x,c#,sql,linq,asp.net-mvc-5,C#,Sql,Linq,Asp.net Mvc 5,我有一张用户和城市的表格。我想获得用户集合中所有城市的列表,以便我可以访问所有城市id public class City { public int ID { get; set; } public string Name { get; set; } public virtual ICollection<ApplicationUser> AppUserID { get; set; } public virtual ICollection<

我有一张用户和城市的表格。我想获得用户集合中所有城市的列表,以便我可以访问所有城市id

    public class City
{
    public int ID { get; set; }
    public string Name { get; set; }

    public virtual ICollection<ApplicationUser> AppUserID { get; set; }
    public virtual ICollection<Measurement> Measurements { get; set; }
}
   public class ApplicationUser : IdentityUser
{
    public override string Id { get; set; }
    public virtual ICollection<City> Cities { get; set; }
}
但它不起作用。 有什么解决办法吗?
提前感谢。

c.AppUserID!=null
无效,因为集合为空,而不是
null

这将为您提供所有具有非空
AppUserID
集合的城市:

var cities = db.Cities.Where(c => c.AppUserID.Any() )

on city.AppUserID等于user。Cities
userid
Cities
进行比较肯定永远不会起作用此模型不好…为什么用户与许多城市有关系?如果您从用户到城市进行1:n比例分配,或者创建一个使n:m到1:n和n:1比例分配的明细表,那么这个问题将得到更好的解决。首先,您需要更正您的问题,并准确地询问您需要什么,因为您似乎感到困惑。我已经准确地回答了你的问题,并强调了你的观点。您提到的所有其他Linq查询都是完全不正确和错误的
Duplicate true
,但这就是为什么我建议用户可以根据需要进一步调整它。一个简单的
Distinct
解决方案确实可以纠正OP不正确的linq,但确实从错误的方向处理问题,特别是当我们需要获得与
用户相关的
城市的列表时。解决方案在很大程度上取决于城市收集中填写的正确数据,而预期的解决方案正好相反
var cities = db.Cities.Where(c => c.AppUserID.Any() )