私は次のクラスを持っています:
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ステートメントの最初の括弧に文句を言っていることです。それは言っています:
'System.Collections.IEnumerable'を実装していないため、コレクション初期化子でタイプ 'CommentList'を実装できません。
誰かが私を助けて、私が間違っていることを教えてもらえますか?
現在のようにアクセスできないため、フィールドを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
};
初期化が正しくありません。明示的なプロパティに値を割り当てる必要があります。
select new CommentList
{
ItemType = d.ItemType,
Comment1 = c.Comment1,
Status1 = s.Status1,
DiscussionBoardId = c.DiscussionBoardId,
CourseId = d.CourseId,
CommentID = c.CommentID
};
私のコメントへのより完全なフォローアップ。あなたがしようとしているのは オブジェクトの初期化を使用 であり、これにはプロパティに名前を付ける必要があります。あなたが試みていると思われるのは コレクションの初期化
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
};
匿名タイプを作成する場合にのみ、プロパティ名を推測できます。
プロパティを明示的に割り当てる必要があります。
new CommentList {
ItemType = d.ItemType,
...