List<my_custom_object>
共通の列に基づいて、IQueryable<T>
と の間の一致するプロパティを抽出して、新しい を生成する必要があるシナリオがありDictionary<String, String>
ます。
これが私の辞書です:
DirectoryProfilePropertiesCollection = (Dictionary<String, String>)ApiMethods.GetProfileProperties(OrganizationIdentifier, DirectoryIdentifier, DirectoryUserName, DirectoryUserPassword);
これにより、次の情報が返されます。
Key: samAccountName, Value: hgulzar
Key: sn, Value: Hassan
Key: lastname, Value: Gulzar
ここでのキーは属性名と呼ばれます。
私も持っていますIQueryable
:
var DirectoryMappingsCollection = repository.GetQuery<OrganizationDirectoryMapping>(where => where.OrganizationDirectory.Organization.OrganizationUnit.UnitIdentifier == OrganizationIdentifier && where.OrganizationDirectory.DirectoryIdentifier == DirectoryIdentifier);
OrganizationDirectoryMapping
エンティティには、というプロパティがありますDirectoryAttribute
両方のコレクションには、照合するときにデータがあります。のDirectoryProfilePropertiesCollection
ペアにはAttributeName
とがありAttributeValue
ます。のDirectoryMappingsCollection
エンティティ、OrganizationDirectoryMapping
にはAttributeName
、 とDetailName
DetailName
、、、を表すカスタム クラス オブジェクトを取得する必要がありますDirectoryAttribute
。AttributeValue
いくつかのクエリを試していましたが、例外が発生したときに行き詰まりました:
Unable to create a constant value of type 'System.Collections.Generic.KeyValuePair`2'. Only primitive types or enumeration types are supported in this context.
質問LinQネストされたコレクションクエリは例外を少し理解しましたが、私はまだ立ち往生しています。
よろしく。
私がこれまでに試したこと:
combinedCol = (from mapCol in DirectoryMappingsCollection
join propCol in DirectoryProfilePropertiesCollection
on mapCol.DirectoryAttribute equals propCol.Key
select new CombinedMappingDataCollection
{
DetailName = mapCol.DetailRequirement.DetailName,
AttributeName = propCol.Key,
AttributeValue = propCol.Value
}).ToList();