Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 组合2个linq操作_C#_Linq - Fatal编程技术网

C# 组合2个linq操作

C# 组合2个linq操作,c#,linq,C#,Linq,你好我有一个逻辑问题我有两个程序 首先是linq,看起来像: _sharedDocumentsAttachments = SourceDocumentAttachmentMeta .Where(sDoc => TargetDocumentAttachmentMeta.Any(tDoc => tDoc.DocumentBridgeId == sDoc.DocumentId)).ToList(); 在哪里 List\u共享文档附件; 及 SharedDocumentAttachm

你好我有一个逻辑问题我有两个程序

首先是linq,看起来像:

 _sharedDocumentsAttachments = SourceDocumentAttachmentMeta
 .Where(sDoc => TargetDocumentAttachmentMeta.Any(tDoc => tDoc.DocumentBridgeId == sDoc.DocumentId)).ToList();
在哪里

List\u共享文档附件;

SharedDocumentAttachmentConnector=new Dictionary();
foreach(共享文档附件中的文档附件)
{
foreach(TargetDocumentAttachmentMeta.Where(tDoc=>document.DocumentId==tDoc.DocumentBridgeId))中的DocumentAttachment tDoc)
{
SharedDocumentAttachmentConnector.Add(document.DocumentId,tDoc.DocumentId);
}
}
我想知道我是否可以以某种方式将第二个过程附加到第一个过程,因为基本上,我们正在进行相同的比较,但向两个不同的集合添加值


我对每个集合都进行了实验,但无法正常工作。

您可以这样做:加入两个集合,然后指定如何转换为字典

_sharedDocumentsAttachments.Join(TargetDocumentAttachmentMeta,
                                 document => document.DocumentId,
                                 tDoc => tDoc.targetDocument,
                                 (document, tDoc) => new 
                                 { 
                                     Key = document.DocumentId, 
                                     Value = tDoc.DocumentId 
                                 })
                            .ToDictionary(item => item.Key,
                                          item => item.Value);
请注意,如果联接的结果是同一document.DocumentId有2条“记录”,则会抛出一个
参数异常:已添加具有相同键的项

如果可能发生这种情况,请考虑:

  • 将其保存为
    查找
  • 将其保存为
    词典
  • 因为两者之间的差异

    SharedDocumnentAttachmentConnector = new Dictionary<int, int>();
    foreach (DocumentAttachment document in _sharedDocumentsAttachments)
    {
        foreach (DocumentAttachment tDoc in TargetDocumentAttachmentMeta.Where(tDoc => document.DocumentId == tDoc.DocumentBridgeId))
        {
             SharedDocumnentAttachmentConnector.Add(document.DocumentId, tDoc.DocumentId);
        }
    }
    
    _sharedDocumentsAttachments.Join(TargetDocumentAttachmentMeta,
                                     document => document.DocumentId,
                                     tDoc => tDoc.targetDocument,
                                     (document, tDoc) => new 
                                     { 
                                         Key = document.DocumentId, 
                                         Value = tDoc.DocumentId 
                                     })
                                .ToDictionary(item => item.Key,
                                              item => item.Value);