实体:共同财产-寻找所有学生玩的运动

问题描述 投票:1回答:1

我想找到一个出现在所有模型中的公共属性。

我目前有两个模型类别StudentSport。一个学生可以玩多种运动。我想找到所有学生玩的所有运动。

这是我的模特的样子

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)));

然而,以上给出了多个结果。即多个网球,而不仅仅是一个。关于我可能做错了什么的任何建议?

c# entity-framework entity-framework-6
1个回答
0
投票

您应该使用SelectMany整理体育项目的退货清单,并使用Disctinct避免重复。

© www.soinside.com 2019 - 2024. All rights reserved.