我有一个 Entity Framework 请求来检索许多不同的信息,使用多个内部联接,因此我使用动态列表作为返回类型,但我似乎无法找到一种方法来使其在迭代时工作。
我提出了包含 4 张 table 的请求,但我将举另一个例子来简化,假设我有 table Room
和 Kitchen
var result = from r in Room
join k in Kitchen on r.idKitchen=k.id
where (r.id == myIDPassedAsParameter)
select new { rId = r.id, kId = k.id}
.ToList<dynamic>();
现在,当尝试访问它时,我会执行以下操作:
foreach (var r in result)
{
foreach (var item in r)
{
Console.WriteLine(item.rId + " " + item.kId);
}
}
我在第二个 foreach 上不断收到转换异常。我找不到任何方法来解决这个问题。我最初使用它是因为我返回的结果是匿名类型,所以这就是我发现可以返回的原因。
谢谢
最佳答案
正如我在评论中所说,我会这样做
private class RoomKitchenPair
{
public int RoomId { get; set; }
public int KitchenId { get; set; }
}
var result = (from r in Room
join k in Kitchen on r.IdKitchen equals k.Id
where (r.Id == myIDPassedAsParameter)
select new RoomKitchenPair { RoomId= r.Id, KitchenId = k.Id})
foreach (var r in result)
{
Console.WriteLine(r.RoomId + " - " + r.KitchenId );
}
关于c# - 迭代列表<dynamic>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45716418/