【发布时间】:2010-11-21 10:42:16
【问题描述】:
我有下面的代码,试图让用户通过单击 WinForm 上的 Next 或 Previous 来“逐步浏览”数据库中的案例说明。它只会抓取第一个案例说明。 我做错了什么?
对此帖子进行了多次修改,我深表歉意,但按照 Jon Skeet 的建议,我能够“修复”最初的错误,但它仍然不起作用。
我是否需要重组我的查询以考虑当前注释?如果是这样,我该怎么做?
public static Guid NextCaseNoteID (int personID)
{
var context = new MatrixDataContext();
Guid nextNoteID = (from caseNote in context.tblCaseNotes
where caseNote.PersonID == personID
orderby caseNote.InsertDate
select caseNote.CaseNoteID ).Skip(1).FirstOrDefault();
return nextNoteID;
}
这就是我最终的结果,感谢所有发布并遵循我的不良思想思路的人......
虽然我现在正试图证明我是否仍然需要 Skip(1),但它似乎运作良好...... 谢谢!!
供日后参考
public static Guid NextCaseNoteID (int personID, DateTime? insertDate)
{
var context = new MatrixDataContext();
Guid nextNoteID = (from caseNote in context.tblCaseNotes
where caseNote.PersonID == personID && caseNote.InsertDate > insertDate
orderby caseNote.InsertDate
select caseNote.CaseNoteID ).Skip(1).FirstOrDefault();
return nextNoteID;
}
public static Guid PreviousCaseNoteID(int personID, DateTime? insertDate)
{
var context = new MatrixDataContext();
Guid nextNoteID = (from caseNote in context.tblCaseNotes
where caseNote.PersonID == personID && caseNote.InsertDate < insertDate
orderby caseNote.InsertDate
select caseNote.CaseNoteID).Skip(1).FirstOrDefault();
return nextNoteID;
}
【问题讨论】:
-
你为什么返回 iquerayble
而不仅仅是 guid? -
@Geoff:Resharper 告诉我,但我不(不)知道更好。请参阅我在 Jon Skeet 帖子下的评论。
-
根据您的编辑,您能否确认从 caseNote.CaseNoteID 返回的内容实际上是 32 位数字和 4 个破折号?
-
编辑后,您尝试将
IQueryable转换为字符串。那是行不通的。 -
(我已经编辑了我的答案以提供替代方案。知道 CaseNoteID 的类型真的很有帮助...)
标签: c# winforms linq data-access-layer