Linq查询复杂对象

时间:2011-06-13 02:16:02

标签: linq linq-to-sql

每个人 - 我有以下一组对象:

User { String:Name, List<Devices> }
Device {String:Name, DeviceVariationInfo }
DeviceVariationInfo { String:OS }

在数据库中,这些对象被拆分为以下表: 用户,设备,DevieVariationsInfo,UserToDevices

我正在尝试查询设备列表及其特定用户的变体信息,并使用以下查询,该查询始终返回Devices中0项的列表。我很确定我在这里做错了什么.. =)

 private void GetUserDevices(ref User user)
    {
        User locUSer = user; 

        if (user != null)
        {
            var deviesQuery = from dts in _dataConext.DB_UserToDevices
                              where dts.UserId == locUSer.Id
                              join ds in _dataConext.DB_Devices on dts.DeviceID equals ds.Id
                              join dsv in _dataConext.DB_DeviceVariations on ds.Id equals dsv.DeviceId
                              select new Device
                              {
                                  Version = ds.Version,
                                  VariationInfo = new DeviceVariation
                                  {
                                      OSVersion = dsv.OS
                                  },
                                  Name = ds.FriendlyName,
                                  Id = ds.Id
                              };

            if (deviesQuery != null)
                user.Devices = deviesQuery.ToList(); 

        }

    }

1 个答案:

答案 0 :(得分:0)

几点说明:

用户是班级吗?如果是这样,为什么要通过ref将其传递给GetUserDevices?除非您想要更改该引用的含义,否则不要这样做。

另外,你为什么要这样做? User locUSer = user;

以下是我如何调试您的问题:删除该查询的部分内容,直到您获得数据为止。例如,删除最后一个连接语句,重新运行查询,并查看出错的位置。