ses*_*ker 3 c# linq subsonic activerecord subsonic3
我有一个"笔记"表.Notes支持一级线程 - 换句话说,您可以回复一个注释,但无法回复另一个回复.所以表格如下所示:
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
)
Run Code Online (Sandbox Code Playgroud)
所以我使用Subsonic活动记录来获取所有"父"笔记:
var allNotes = (from n in Note.All()
where n.ParentNoteId == null
orderby n.NoteDate descending
select n)
.Skip((pageIndex - 1) * pageSize).Take(pageSize);
Run Code Online (Sandbox Code Playgroud)
接下来,我只循环遍历IQueryable并填写注释Guids的通用列表:
List<Guid> noteList = new List<Guid>();
foreach (var note in allNotes)
{
noteList.Add(note.NoteId);
}
Run Code Online (Sandbox Code Playgroud)
最后,我试图构建一个查询来获取原始查询中的所有回复:
replies = from n in Note.All()
where n.ParentNoteId != null && noteList.Contains(n.ParentNoteId.Value)
select n
Run Code Online (Sandbox Code Playgroud)
我收到的错误是:"不支持方法'包含'"任何想法?
编辑:我尝试转换为如下字符串:
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);
Run Code Online (Sandbox Code Playgroud)
与以前相同的错误消息.
Vla*_*adV 10
似乎,List <> .Pelonic不支持Contains.
但是,IEnumerable <>.包含支持,所以你可以试试这个:
IEnumerable<string> noteListEnumerable = noteList;
replies = from n in Note.All()
where n.ParentNoteId != null && noteListEnumerable.Contains(n.ParentNoteId.Value)
select n
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1071 次 |
| 最近记录: |