У меня есть таблица «Примечания». Заметки поддерживают один уровень потоков - другими словами, вы можете ответить на заметку, но не можете ответить на другой ответ. Таким образом, таблица выглядит примерно так:
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 и заполняю общий список заметок. Guids:
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
Я получаю сообщение об ошибке: «Метод« Содержит »не поддерживается». Есть идеи?
РЕДАКТИРОВАТЬ: я пытался преобразовать в строки, как показано ниже:
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);
То же сообщение об ошибке, что и раньше.