gpt4 book ai didi

c# - 一对多 LINQ 查询 - 程序集没有 SELECT 的定义

转载 作者:行者123 更新时间:2023-11-30 23:16:43 25 4
gpt4 key购买 nike

我是一位经验丰富的 SQL 开发人员,正在尝试学习 LINQ。假设我有以下类(class):

    public partial class Course
{
public Course()
{
this.Students = new HashSet<Student>();
this.Students1 = new HashSet<Student>();
}

public int id { get; set; }
public string name { get; set; }

public virtual ICollection<Student> Students { get; set; }
public virtual ICollection<Student> Students1 { get; set; }
}

public partial class Student
{
public Student()
{
this.Courses = new HashSet<Course>();
}

public int id { get; set; }
public string name { get; set; }
public Nullable<int> age { get; set; }
public Nullable<int> courseid { get; set; }

public virtual Course Course { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}

我正在尝试让所有学生参加计算机类(class),即学生对象应该作为类(class)对象中的集合返回。我试过这个:

from c in Courses
.Include(s => s.Students)
.Where(c => c.name.StartsWith("Computing"))

select new {
c.name,
Students = c.Select(x => x.Students)

我在 LINQPAD 中得到的错误是:无法执行文本选择:'Lib.Course' 不包含 'Select' 的定义并且没有扩展方法 'Select' 接受类型为 'Lib.Course' 的第一个参数可能是找到(按 F4 添加 using 指令或程序集引用)

最佳答案

Course 不是 IEnumerable,因此它不支持 Select 方法。如我所见,您使用 LINQ 查询语法(不是其他解决方案建议的方法语法),因此您必须在代码中使用它:

from c in Courses
.Include(s => s.Students)
.Where(c => c.name.StartsWith("Computing"))

select new {
c.name,
c.Students
}

关于c# - 一对多 LINQ 查询 - 程序集没有 SELECT 的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41893448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com