在变量中选择列表

时间:2013-11-17 00:05:27

标签: c# asp.net sql sql-server linq

我想查询我的数据库以查找特定的组以及有关该组的所有评论。我可以使用直接SQL(SqlCommand)轻松完成此操作但是使用linq to sql我遇到了有关查询的select子句的问题。

这些是我的查询创建的DTO:

public class GroupDTO
{
        public int GroupId { get; set; }
        public String Groupname { get; set; }
        public String Description { get; set; }
        public List<GroupCommentDTO> GroupComments { get; set; }

        public class GroupCommentDTO
        {
            public int UserId { get; set; }
            public String Username { get; set; }
            public String Comment { get; set; }
        }
}

有谁能请用我的课程向我展示上面的linq to sql方式?这是GroupComments列表我遇到了在同一查询中正确填充的问题。我想选择包含所有评论的所有组,对于每个评论我想要用户名和评论。一个组可能没有注释,因此可能需要左连接。

enter image description here

我尝试过这样的事情。

 var query = (from groups in db.Groups
                 from gc in db.GroupComments
                    .Where( comment => groups.GroupId == comment.GroupId).DefaultIfEmpty()
                 from users in db.Users
                 where users.UserId == gc.UserId
                 select new GroupDTO
                 {
                    GroupId = groups.GroupId,
                    Groupname = groups.Groupname,
                    GroupComments = // How can i fill this arraylist of comments?
                 }).ToList<GroupDTO>();

2 个答案:

答案 0 :(得分:0)

应该很容易:

List<GroupCommentDTO> comments = context.Users
                                        .First(x => x.GroupId == groupId)
                                        .GroupComments

除非您的导航属性设置不正确。

答案 1 :(得分:0)

我会说些什么:

var your_comments = 
       from group in your_collection_of_groupDTOs.GroupComments
       join user in Users on user.ID equals group.UserId
       select new { user.UserName, user.UserId, group.Comment };

根据评论:
似乎您的问题是类型转换。我建议您查看MSDN,或使用Google搜索结果,例如this,等等。

此外,如果阅读第一个链接无法解决问题,您可以使用此信息更新问题