0

私は Document クラスを持っています:

public class Document
{
        public int FromCompanyId { get; set; }
        public int ToCompanyId { get; set; }
        public string DocumentText { get; set; }
}

いずれかの会社が文書を他の人に送信するとき、私は彼らの文書を保存しましたId。まもなく、私は多くのIDのペアを持っています:

1, 2  //  Company which has Id=1 sent document to Company which has Id=2.
1, 3  //  Company which has Id=1 sent document to Company which has Id=3.
4, 3  //  Company which has Id=4 sent document to Company which has Id=3 etc.
2, 1  
4, 3  
4, 5  
5, 4  
5, 5  
4, 5  
3, 1 

どの会社も自社の文書のみを管理できるようにしたい。送受信。会社 ID でドキュメントを取得するにはどうすればよいですか? または、誰でも別のアドバイスを与えることができます。

したがって、いつid = ToCompanyId(任意の会社がこの会社にドキュメントを送信した場合) でグループ化しFromCompanyId、いつid = FromCompanyId(この会社が別の会社にドキュメントを送信した場合) でグループ化したいかということですToCompanyId

これはフェイスブックのメッセージのようです。メッセージをクロスすると、すべてのダイアログが Id of other users で表示されます。私のアプリケーションでは、他の会社の ID でドキュメントを表示したいと考えています。

これは正しく機能しid = FromCompanyIdます。

GetDocumentsByCompanyId(int Id)
{
...
var myDocs= MyDatabaseContext.Documents.Where(e => e.FromCompanyId == Id|| e.ToCompanyId == Id);

var docGroups = from m in myDocs
                group m by m.ToCompanyId
                into g select new { ToCompanyIdKey = g.Key, betweenDocs = g };
...

}

下手な英語でごめんなさい。

4

1 に答える 1

1

次のコードを使用できます。
条件演算子を使用して、どれが他社の ID であるかを調べるだけです。この情報は、ドキュメントをグループ化するために使用されます。

var myDocs = MyDatabaseContext.Documents
                              .Where(e => e.FromCompanyId == Id ||
                                          e.ToCompanyId == Id)
                              .Select(x => new { OtherCompanyId
                                                   = (x.FromCompanyId == Id) ? 
                                                      x.ToCompanyId : 
                                                      x.FromCompanyId,
                                                 Document = x });

var docGroups = from m in myDocs
                group m by m.OtherCompanyId into g
                select new { ToCompanyIdKey = g.Key,
                             BetweenDocs = g.Select(x => x.Document) };
于 2013-01-24T12:57:35.593 に答える