如何在 LINQ 中使用外键列检索单个记录?

How to retrieve a single record using a foreign key column in LINQ?

我有列表“StudentList”(有不止一条记录) 我有另一个列表“CourseList”(包含多个记录) StudentList (1) 到 (*) CourseList [Relationship]

我想检索 courseID(CourseList 中的列)= 1000 的记录;

我试过但无法执行的。

        var viewmodel = StudentList.Select(x => x.CourseList.Where(y => y.courseID == "1000"));

提前致谢!

你可以试试这个方法

var result = students.Where(x=>isExistCourse(x));
public static bool isExistCourse(Student student)
    {
        foreach(var item in student.Courses)
        {
            if(item.Id==1000)
                return true;
        }
        return false;
    }

如果只想获取一条记录,可以将where换成FirstOrDefault

这是您要找的答案,

var viewmodel = StudentList.SelectMany(x => x.CourseList.Where(y => y.courseID == "1000")).FirstOrDefault();

既然你对它的工作原理和select许多人的作用表现出兴趣,虽然我已经在评论部分回答了你的问题,但我会进一步解释一下,

  1. 首先要注意的是,x.CourseList.Where(y => y.courseID == "1000") 部分将 returnid为1000的课程列表,即使只有一门课程也是 列表。

  2. 如果我们要获取每个学生的 ID 为 1000 的课程列表,我们将 最终得到课程列表列表(使用 select)。

  3. 所以,这里 select许多将 'List of List of courses' 扁平化为 'List of courses' 合并所有内部课程。

  4. 最后,FirstOrDefault() 将确保 return id 为 100,这是您需要的结果。

注意:虽然我使用了术语列表,但您可能正在处理 IEnumerable

希望您和登陆这里的其他人觉得这对您有所帮助。