0

質問して申し訳ありませんが、同様のクエリを検索しようとしましたが、結果がないか、何を探しているのかわからなかったので、ここに質問があります:

User_Table 主キーが外部キーとして Message_Tabel にある 2 つのテーブル 各メッセージにはコードがあり、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 1 または 3 ではなく ID 2 を持つユーザーのすべてのメッセージを取得します。

ユーザーが特定のコードでメッセージをいくつでも送信できるようにしたかったのですが、そのコードで各メッセージに 1 回返信し、残りは無視します

私はそれがすべて理にかなっていることを願っています

助けてくれてありがとう

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 に答える