2

我要做的是找到从查询中获取对象集合的最佳和最快的方法,以便我可以将它们解析为 JSON 并通过 WCF Web 服务发送它们。我有一个与其他两个实体相关的实体,我的 edmx 中显示的属性是这样的:

  • 事件

    • 事件 ID
    • 日期
    • 加速
    • 强度
    • 设备ID
    • 区块标识
    • 设备
    • 堵塞
  • 设备

    • 设备ID
    • 别名
    • 集群 ID
    • 活动
  • 堵塞

    • 区块标识
    • 开始日期
    • 日期结束
    • 活动

我想获取与每个块关联的事件列表列表,每个块的事件由一个列表表示,但我只想获取每个事件的 EventId、Date、DeviceId、BlockId、加速度和强度,因为我想要以避免尝试解析每个 Event 对象中的 Device 和 Block 属性而导致的循环引用。

我尝试了类似的东西

var result = (from d in context.Block select (d.Events)).ToList();

但这仅返回一个包含每个块中的事件对象的列表,但我不知道如何获取我为每个块中的每个事件指定的信息。

如何在查询中指定要检索的信息?

4

2 回答 2

1

我认为使用基于方法的查询会更容易:

var result = context.Block.Select(b => b.Events.Select(e => new
                                                {
                                                    e.EventId,
                                                    e.Date,
                                                    e.DeviceId,
                                                    e.BlockId,
                                                    e.Accelleration,
                                                    e.Intensity
                                                }).ToList()).ToList();
于 2013-04-15T18:31:51.117 回答
1

您需要使用 groupJoin

这是一个例子

var teamsandriders = teams.GroupJoin(riders, Team => Team.name, Rider => Rider.TeamName, (team, teamRiders) => new {Team = team.name, riders = teamRiders.Select(rider => rider.name )});

于 2013-04-15T18:32:46.183 回答