我有以下课程:
public class CommentList
{
string ItemType;
string Comment1;
string Status1;
string DiscussionBoardId;
Guid CourseId;
Guid CommentID;
}我试图执行以下LINQ语句:
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”。
有人能帮帮我告诉我我做错了什么吗?
发布于 2013-08-28 17:18:25
使您的字段public,因为它们现在是不可访问的。
public class CommentList
{
public string ItemType;
public string Comment1;
public string Status1;
public string DiscussionBoardId;
public Guid CourseId;
public Guid CommentID;
}在你的初始化器中设置它们。
select new CommentList
{
ItemType = d.ItemType,
Comment1 = c.Comment1,
Status1 = s.Status1,
DiscussionBoardId = c.DiscussionBoardId,
CourseId = d.CourseId,
CommentID = c.CommentID
};发布于 2013-08-28 17:16:47
只是对我的评论做了更全面的跟进。您要做的是使用对象初始化,它要求您为属性命名。它认为你正在尝试的是集合初始化
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
};发布于 2013-08-28 17:16:07
初始化不正确。您需要为显式属性赋值。
select new CommentList
{
ItemType = d.ItemType,
Comment1 = c.Comment1,
Status1 = s.Status1,
DiscussionBoardId = c.DiscussionBoardId,
CourseId = d.CourseId,
CommentID = c.CommentID
};https://stackoverflow.com/questions/18494208
复制相似问题