我有一个“笔记”表格。笔记支持一级线程 - 也就是说你可以回复一条笔记,但不能回复另一个回复。因此,该表格看起来像以下内容:
CREATE TABLE [dbo].[Notes] (
[NoteId] [uniqueidentifier] ROWGUIDCOL NOT NULL DEFAULT (newid())
CONSTRAINT [PK__Notes]
PRIMARY KEY ([NoteId]),
[ParentNoteId] UNIQUEIDENTIFIER NULL,
[NoteText] NVARCHAR(MAX) NOT NULL,
[NoteDate] DATETIME NOT NULL
)
我正在使用Subsonic active record获取所有“父”注释:
var allNotes = (from n in Note.All()
where n.ParentNoteId == null
orderby n.NoteDate descending
select n)
.Skip((pageIndex - 1) * pageSize).Take(pageSize);
接下来,我只需要循环遍历IQueryable并填充一个笔记Guid的通用列表:
List<Guid> noteList = new List<Guid>();
foreach (var note in allNotes)
{
noteList.Add(note.NoteId);
}
最后,我正在尝试构建一个查询来获取原始查询中所有笔记的回复:
replies = from n in Note.All()
where n.ParentNoteId != null && noteList.Contains(n.ParentNoteId.Value)
select n
我收到的错误信息是:“不支持方法'Contains'”,有什么想法吗?
编辑:我尝试转换为以下字符串:
List<String> noteList = new List<String>();
foreach (var note in allNotes)
{
noteList.Add(note.NoteId.ToString());
}
replies = (from n in Note.All()
where n.ParentNoteId != null &&
noteList.Contains(n.ParentNoteId.Value.ToString()) select n);
与之前相同的错误信息。