C# 使用实体遍历join语句的结果时出错
我正在使用实体框架,并尝试连接。连接执行得很好,但是当我尝试循环我的结果时,我得到了一个错误。见下文C# 使用实体遍历join语句的结果时出错,c#,entity-framework,C#,Entity Framework,我正在使用实体框架,并尝试连接。连接执行得很好,但是当我尝试循环我的结果时,我得到了一个错误。见下文 var items = from a in db.ActivityLogs from v in db.Vehicles where (a.PlateID1 == v.PlateID || a.PlateID2 == v.PlateID) && v.Alerted ==
var items = from a in db.ActivityLogs
from v in db.Vehicles
where (a.PlateID1 == v.PlateID || a.PlateID2 == v.PlateID) && v.Alerted == true
select new { a, v };
这执行得很好,然后我得到了错误
其他信息:无法将类型为“f_uAnonymousType0”2[DB.ActivityLog,DB.Vehicle]”的对象强制转换为类型为“DB.ActivityLog”
关于以下代码
foreach (ActivityLog l in items)
提前感谢您已投射到匿名类型,因此无法将其投射到活动日志中
var items = (from a in db.ActivityLogs
from v in db.Vehicles
where (a.PlateID1 == v.PlateID || a.PlateID2 ==
v.PlateID) && v.Alerted == true
select new { a, v }).ToArray();
foreach (var item in items)
{
Console.writeLine(item.a);
Console.writeLine(item.v);
}
或
new{a,v}
不是一个ActivityLog
。您的类应该有属性来容纳a&v。它的语法不正确。这是一个伪代码。如果您的活动日志是DTO类型的类,则可以使用它所需的属性。
var items = (from a in db.ActivityLogs
from v in db.Vehicles
where (a.PlateID1 == v.PlateID || a.PlateID2 ==
v.PlateID) && v.Alerted == true
select new ActivityLog
{
A= a, // Pseudo code
V = v, // Pseudo code map to essential properties
}).ToArray();
foreach (ActivityLog l in items)