我有两个对象。
public class MIMFeedRedeemedGuestUser
{
public string Id { get; set; }
private string _mail;
public string mail { get { return _mail; } set { _mail = value.ToLower(); } }
}
和
public class ExtranetUser
{
public byte[] objectGUID { get; set; }
public string sAMAccountName { get; set; }
public string givenName { get; set; }
public string sn { get; set; }
public string displayName { get; set; }
public string telephoneNumber { get; set; }
public string extensionAttribute1 { get; set; }
public string extensionAttribute5 { get; set; }
public string extensionAttribute8 { get; set; }
public int userAccountControl { get; set; }
public bool isEnabled { get; set; }
private string _mail;
public string mail { get { return _mail; } set { _mail = value.ToLower(); } }
public string inviteId { get; set; }
public string AzureObjectId { get; set; }
}
在我的控制台应用程序中,我有一些代码可以生成这两种类型的列表。
// Get a list of guest users who have redeemed their invites.
List<MIMFeedRedeemedGuestUser> RedeemedGuestUserList = GetRedeemedGuestUserListFromSQL();
// Get a list of all visible users from the SCIM provision OU in extranet AD.
List<ExtranetUser> SCIMProvADUserList;
using (DALExtranetAD _ad = new DALExtranetAD())
{
SCIMProvADUserList = _ad.GetSCIMProvUsers();
}
现在请注意,两个对象都具有“邮件”字段/属性。邮件值将是唯一的。我想进行左联接,所以我可以看到列表
我查找了Enumerable.GroupJoin(),但是不确定是否正是我所需要的。
这是我的尝试,但这对我不起作用。我在互联网上看到的示例也是标准linq格式。我更喜欢以方法格式查看它。这是我的尝试。
var set = SCIMProvADUserList.GroupJoin(RedeemedGuestUserList, u => u.mail, s => s.mail,
(u, s) => new
{
mailinExtranet = u.mail,
samaccountname = u.sAMAccountName,
azureId = s.Select(p=>p.Id),
mailinAzure = s.Select(p=>p.mail)
});
当我检查集合时,我看到了列表中的所有元素,但没有看到任何mailinAzure属性值。它只是说null。甚至应该有一个匹配项。