c# - LINQ DB 列表包含对象
问题描述
我正在尝试编写一个 linq 查询,但它不起作用。我的数据库由一个 EventDetails 表组成,我从中获取学生,然后我想为每个学生获取班级(n:1)。所以我迭代班级表并检查学生列表是否包含学生。我究竟做错了什么?
编码:
var students = db.EventDetails
.Include("Room")
.Include("Task")
.Include("Student")
.Where(x => x.Student != null)
.Select(x => x);
foreach (var s in students)
{
string studentClass = db.Class
.Include("Students")
.ToList()
.Where(x => x.Students.Contains(s.Student))
.Select(x => x.Name).ToString();
}
解决方案
您收到了显示的输出,因为您调用ToString()
的是IEnumerable<string>
代替,用于String.Join
获得预期的结果,即
string studentClass = string.Join(", ",db.Class
.Include("Students")
.Where(x => x.Students.Contains(s.Student))
.Select(x => x.Name));
此外,.ToList()
在查询中间调用是不必要的,并且会导致可避免的开销,因此最好不要在那里调用它。
推荐阅读
- docker - Installing certs into a Jupyter notebook docker image
- python - [Python]下面代码的嵌套 if 语句存在缩进问题
- multithreading - 应用所有已知解决方案后发生 timespec 重新定义错误
- shell - Golang 执行 shell 命令并作为通道返回
- java - Jtable 获取选定行总是返回 -1
- python - 这两者有什么区别吗?
- android - 与源代码一起发布 Android Kotlin 库
- python - 将类的内部命名空间作为字典返回
- javascript - 在 .NET Core MVC 中访问 Cookie 时,它的值显示为 null
- amazon-web-services - 如何选择正确的 AWS Elastic Beanstalk 实例类型和数量?