代码之家  ›  专栏  ›  技术社区  ›  jsonGPPD

使用ICollection从主详细信息获取子详细信息时出现一对多关系问题

  •  0
  • jsonGPPD  · 技术社区  · 7 年前

    大家好,

    我有两个相互有关系的模型示例。一对多关系

    // Main model
    public class MainDetails {
       [Key]
       public int MainDetailId { get; set; }
       public string Name { get; set; }
       public ICollection<SubDetails> SubDetails { get; set; }
    }
    
    // Sub model
    public class SubDetails {
       [Key]
       public int SubDetailId{ get; set; }
       public string School { get; set; }
    
       public MainDetails MainDetails { get; set; }
       public int MainDetailId { get; set; }
    }
    

    这是我遇到问题的代码。

    public IQuerable<MainDetails> SearchDetails(string school){
         return context.MainDetails.Where(details=>details.SubDetails.School == school) 
         // details.SubDetails.School is an ICollection so this not working.
    }
    
    public IQuerable<MainDetails> SearchDetails(string school){
         return context.MainDetails.Inclue(x=>x.SubDetails).Where(details=>details.SubDetails.School == school) 
         // This doesn't work too
    }
    

    为什么我不能得到 SubDetails.School ? 或者任何可以解决这个问题的东西?

    对不起,我是新来的。我希望你能和我分享一些。非常感谢。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Mick    7 年前

    这段代码甚至不应该被编译。。。

    public IQuerable<MainDetails> SearchDetails(string school)
    {
         return context.MainDetails.Where(details=>details.SubDetails.School == school) 
         // details.SubDetails.School is an ICollection so this not working.
    }
    

    你应该需要。。。

    public IQuerable<MainDetails> SearchDetails(string school)
    {
         return context
                    .MainDetails
                    .Where(details=> 
                        details.SubDetails.Any(sd => sd.School == school));
    }