0

我正在使用 .AddObject() 将数据插入到我的实体表中。该对象是实体表的类型。对象是 eventStudent,它有字符串 eventStudent.ID、bool eventStudent.StudentPresent、bool eventStudent.ParentPresent。

学生是包含学生 ID 的字符串列表。他们在活动中的存在存在于另一个称为参加者的对象中,由 String studentID、bool studentPresent 和 bool parentPresent 组成。只有 StudentPresent 和/或 ParentPresent 为 true 的学生 ID 才会出现在与会者列表中。当我加载我的 eventStudent 对象时,我需要设置 StudentPresent 和 ParentPresent。这就是我想出的:

foreach (StudentMinimum student in students)
{
eventStudent.StudentPresent = (from a in attendees
                           where a.StudentID.Contains(student.StudentID)
                           && a.StudentPresent
                           select a.StudentPresent);
}

我收到错误无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“bool”

如何改进我的查询,以便将 eventStudent.StudentPresent 设置为 True 或 False?

4

1 回答 1

0

编译器不知道查询会返回什么类型,因为您没有将它显式转换为类型。结果,它得到一个泛型IEnumerable类型(可能有很多记录返回对吗?因此IEnumerable. 并且这些记录每个都可以是任何类型,因此是泛型类型)。

因此,如果您的数据库中的数据不好并且您返回了多条记录,则转换:

StudentPresent
true
false
false

布尔值不会发生。有几种方法可以解决这个问题。就个人而言,我会做类似的事情

var studentPresent = (from a in attendees
                           where a.StudentID.Contains(student.StudentID)
                           && a.StudentPresent
                           select a.StudentPresent).FirstOrDefault();

eventStudent.StudentPresent = (bool)studentPresent;

好吧,实际上,我会改用 lambda 查询,但这只是个人喜好。

于 2013-06-05T16:09:14.757 回答