首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能使用集合初始化器实现XYZ类型,因为它没有实现'System.Collections.IEnumerable‘

不能使用集合初始化器实现XYZ类型,因为它没有实现'System.Collections.IEnumerable‘
EN

Stack Overflow用户
提问于 2013-08-28 17:14:21
回答 4查看 26.2K关注 0票数 17

我有以下课程:

代码语言:javascript
复制
public class CommentList 
{
    string ItemType;
    string Comment1;
    string Status1;
    string DiscussionBoardId;
    Guid CourseId;
    Guid CommentID;
}

我试图执行以下LINQ语句:

代码语言:javascript
复制
List<CommentList> query=
    from c in db.Comments
    join s in db.Status on c.StatusId equals s.StatusId
    join d in db.DiscussionBoards 
        on c.DiscussionBoardId equals d.DiscussionBoardId
    where d.CourseId=="CourseID"
    orderby d.ItemType, d.DiscussionBoardId
    select new CommentList {
        d.ItemType,
        c.Comment1,
        s.Status1,
        c.DiscussionBoardId,
        d.CourseId,
        c.CommentID
    };

问题是,编辑器正在抱怨select语句的第一个括号。据说:

无法使用集合初始化器实现“CommentList”类型,因为它没有实现“System.Collection. initializer”。

有人能帮帮我告诉我我做错了什么吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-28 17:18:25

使您的字段public,因为它们现在是不可访问的。

代码语言:javascript
复制
public class CommentList
{
  public string ItemType;
  public string Comment1;
  public string Status1;
  public string DiscussionBoardId;
  public Guid CourseId;
  public Guid CommentID;
}

在你的初始化器中设置它们。

代码语言:javascript
复制
select new CommentList
{
    ItemType = d.ItemType,
    Comment1 = c.Comment1,
    Status1 = s.Status1,
    DiscussionBoardId = c.DiscussionBoardId,
    CourseId = d.CourseId,
    CommentID = c.CommentID
};
票数 32
EN

Stack Overflow用户

发布于 2013-08-28 17:16:47

只是对我的评论做了更全面的跟进。您要做的是使用对象初始化,它要求您为属性命名。它认为你正在尝试的是集合初始化

代码语言:javascript
复制
List<CommentList> query = from c in db.Comments
                join s in db.Status on c.StatusId equals s.StatusId
                join d in db.DiscussionBoards on c.DiscussionBoardId equals d.DiscussionBoardId
                where d.CourseId == "CourseID"
                orderby d.ItemType, d.DiscussionBoardId
                select new CommentList
                {
                    ItemType = d.ItemType,
                    Comment1 = c.Comment1,
                    Status1= s.Status1,
                    DiscussionBoardId = c.DiscussionBoardId,
                    CourseId = d.CourseId,
                    CommentId = c.CommentID
                };
票数 11
EN

Stack Overflow用户

发布于 2013-08-28 17:16:07

初始化不正确。您需要为显式属性赋值。

代码语言:javascript
复制
select new CommentList
{
    ItemType = d.ItemType,
    Comment1 = c.Comment1,
    Status1 = s.Status1,
    DiscussionBoardId = c.DiscussionBoardId,
    CourseId = d.CourseId,
    CommentID = c.CommentID
};
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18494208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档