0

我有文档类:

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

这看起来像 Facebook 消息。当我交叉我的消息时,我会看到我的所有其他用户的 Id对话。在我的应用程序中,我想查看其他公司的 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 回答