查找一个枚举中的字段是否存在于另一个枚举的两个可能字段中
本文关键字:枚举 字段 两个 另一个 存在 查找 是否 一个 | 更新日期: 2023-09-27 18:33:07
我有两个由不同类型的枚举。
public Contact
{
public string fullName;
}
public Property
{
public string Rep;
public string PropMgr;
}
我正在尝试获取在 Rep 或 PropMgr 字段中表示的所有"联系人"。
我的直觉说,加入一个结果的rep,然后加入PropMgr的另一个结果集。然后联接结果集并选择非重复。不确定这是否有效,以及是否有更有效的方法。
添加一些附加信息:一些数据将是
Contact
FullName: Nick
Property
Name: "Happy Place"
PropMgr: Nick
Rep: Sally
当比较两组并得到这个组合时,我想选择联系人"尼克"。
请记住,我有 IEnumerable 联系人列表和 IEnumerable 属性列表
我没有任何数据可以测试它,但我想这样的事情应该有效:
IEnumerable<Contact> contacts = ...
IEnumerable<Property> properties = ...
var query = from property in properties
from name in new[] { property.Rep, property.PropMgr }
join contact in contacts on name equals contact.FullName
select contact;
var result = query.Distinct().ToList();
尝试遵循 Linq 查询
Contacts.Select(x=>x.fullName).Intersect(Properties.Select (x=>x.Rep).Union(Properties.Select(x=>x.PropMgr))
// contacts -> IEnumerable of Contact, Properties -> IEnumerable of Property
解决同一问题的方法有很多种......
尝试一些技术含量较低的方法:
var namesInProperties = new HashSet<string>();
foreach (Property p in PropertyList)
{
namesInProperties.Add(p.PropMgr);
namesInProperties.Add(p.Rep);
}
IEnumerable<Contact> matchingContacts = ContactsList.Where(c => namesInProperties.Contains(c.fullName));