我正在构建一个小型消息系统,该系统仅显示两个用户之间的消息线程。在大多数情况下,我可以正常工作,并以正确的顺序显示消息等。但是,我现在遇到的问题是与不同用户的对话看起来都一样。
在尝试检索两个用户之间的线程时,我将其范围缩小到使用where子句逻辑的问题。我尝试了不同的逻辑组合,但是有些意味着我收到的消息太多,而另一些意味着我收到的消息太少。我只是想不出正确的组合来仅获得两个用户的完整线程。
// Get all conversations logged in user sent or received
List<GetConversation> Conversation =
KoData.GetConversations
.Where(c => (c.Recipient == recipient || c.Sender == LoggedInUser) || (c.Sender == recipient || c.Recipient == LoggedInUser))
.OrderBy(c => c.MessageTime)
.ToList();
在这种情况下,接收者是已登录用户正在与之对话的用户(我知道这有点令人困惑,我打算在一切正常时简化它)。
任何人都可以帮助正确的where子句逻辑吗?或者,如果还有更多的东西,而我却缺少了,有人可以建议我,那会很棒。
答案 0 :(得分:1)
是的,这令人困惑,但是在这种情况下,我可以确定是这样的:
.Where(c => (c.Recipient == recipient && c.Sender == LoggedInUser) || (c.Sender == recipient && c.Recipient == LoggedInUser))
说出来基本上是“对他/她和我来说,或者对我和他/她”