我使用.AddObject()将数据插入到我的实体表中。该对象是实体表的类型。对象是eventStudent,它有字符串eventStudent.ID,bool eventStudent.StudentPresent,bool eventStudent.ParentPresent。
学生是包含学生ID的字符串列表。他们在活动中的存在是另一个名为与会者的对象,由String studentID,bool studentPresent和bool parentPresent组成。只有对StudentPresent和/或ParentPresent有效的学生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?
答案 0 :(得分: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查询,但这只是个人偏好。