0

抱歉问我尝试搜索类似的查询,但没有结果,或者我不知道要找什么,所以这里是问题:

两个表 User_Table 主键在 Message_Tabel 作为外键 每条消息都有一个代码,是一个 isReplyed (true, false)

现在我如何检索具有特定代码且没有回复的消息的用户

例子:

UserTabel                            
==========            
ID 1                 
ID 2                
ID 3                 
ID 4                 
ID 5                
ID 6                
ID 7                 
ID 7                 



                Message_Tabel             
           =============================================
            ID 1       Code 22X      Replied False   MID 1
            ID 1       Code 20X      Replied False   MID 2
            ID 1       Code 22X      Replied true    MID 3
            ID 1       Code 22X      Replied False   MID 4
            ID 2       Code 22X      Replied False   MID 5
            ID 3       Code 22X      Replied true    MID 6
            ID 2       Code 22X      Replied False   MID 7
            ID 2       Code 22X      Replied False   MID 8

使用对所有用户的查询,代码为 22X 的消息被检索但没有回复:按用户 ID 分组的消息将检索 ID 为 2 而不是 ID 1 或 3 的用户的所有消息,因为已经用该代码回复了一个用户。

我想要它,所以如果任何用户都可以使用特定代码发送尽可能多的消息,但我将使用该代码回复每条消息并忽略其余消息

我希望这一切都有意义

谢谢您的帮助

4

1 回答 1

1

像这样的东西可能会奏效(未经测试):

        var users = context.Messages
            .Where(m => m.Code == "22X")
            .GroupBy(m => m.User)
            .Where(m => m.All(x => x.Replied == false))
            .Select(p => p.Key);

这应该会返回满足您期望的用户。如果您愿意,您也可以更改查询以返回消息,以便您可以选择要回复的消息。

于 2012-07-18T00:24:38.797 回答