问候我有一个逻辑问题我有2个程序
首先是linq看起来像:
_sharedDocumentsAttachments = SourceDocumentAttachmentMeta
.Where(sDoc => TargetDocumentAttachmentMeta.Any(tDoc => tDoc.DocumentBridgeId == sDoc.DocumentId)).ToList();
其中
List<DocumentAttachment> _sharedDocumentsAttachments;
和
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);
}
}
我想知道我是否可以以某种方式将第二个程序附加到第一个程序,因为基本上相同但是将值添加到2个不同的集合中?
我正在为每个人进行实验,但它无法正常工作。
答案 0 :(得分:2)
您可以这样做:加入两个集合,然后指定如何转换为字典
_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);
请注意,如果连接将导致同一文档的2个“记录”。文档标识它将抛出ArgumentException: An item with the same key has already been added
。
如果可能发生这种情况,请考虑:
LookUp
Dictionary<int,IEnumerable<int>>