我想找到一个出现在所有模型中的公共属性。
我目前有两个模型类别Student
和Sport
。一个学生可以玩多种运动。我想找到所有学生玩的所有运动。
这是我的模特的样子
public class DbContext : DbContext
{
public DbContext(): base("name=DbContext")
{
}
public DbSet<Student> MyStudents { get; set; }
public DbSet<Sport> MySports { get; set; }
}
public class Student
{
public List<Sport> Actions { get; set; }
public string Name { get; set; }
}
public class Sport
{
public string SportName { get; set; }
}
我的问题是如何获得所有学生参加的所有运动的清单?简而言之,我正在寻找普通运动。所以基本上在以下情况下
Student A played Sports : Soccer , Tennis , Bowling
Student B played Sports : Soccer , Tennis ,
Student C played Sport : Tennis
然后只能退回网球,并且只能退回一次(不可以退回多个网球实例)。这就是我所做的
var sports = context.Sports;
var commonSports = sports.Where(sport =>
students.All(student => student.Actions.Any(studSport =>
studSport.SportName == sport.SportName)));
然而,以上给出了多个结果。即多个网球,而不仅仅是一个。关于我可能做错了什么的任何建议?
您应该使用SelectMany
整理体育项目的退货清单,并使用Disctinct
避免重复。