使用 Intersect 比较 2 个列表,但在第三个列表中应包含列表 2 中的匹配 AND 属性

我有 2 个对象列表。我正在使用 Intersect LINQ 运算符来匹配两个列表之间的任何匹配并将其设置为变量。在这个新形成的列表中,我只能获取匹配的值。

我研究过 SelectMany,但认为这不是正确的解决方案。

var CommonList = iMIScustomersList.Select(s1 => s1.Company).ToList().Intersect(zendeskCompaniesList.Select(s2 => s2.name).ToList()).ToList();

我想获取匹配的值,并且从列表 2 中的匹配值中,我还想获取 id 属性。例如 zendeskCompaniesList 中的 s2.id。目前使用 Intersect 我只获得匹配的值,而没有从该匹配中获得其他属性。


慕的地10843
浏览 55回答 1
1回答

DIEA

您需要的是连接,而不是相交。var CommonList = iMIScustomersList.Join(zendeskCompaniesList,                      cust=>cust.Company,                      comp=>comp.Name,                      (cust,comp)=> new {Customer=cust,Company=comp}).ToList();例如,var iMIScustomersList = Enumerable.Range(1,10)                                   .Select(x=> new Customer{Name = $"Name{x}", Company=$"Company{x}"});var zendeskCompaniesList = Enumerable.Range(5,10)                                   .Select(x=> new Company{Name=$"Company{x}", Location = $"Location{x}"});var CommonList = iMIScustomersList.Join(zendeskCompaniesList,                      cust=>cust.Company,                      comp=>comp.Name,                      (cust,comp)=> new {Customer=cust,Company=comp}).ToList();样本输出
打开App,查看更多内容
随时随地看视频慕课网APP