我有两个由不同类型组成的枚举。
public Contact
{
public string fullName;
}
public Property
{
public string Rep;
public string PropMgr;
}
我正在尝试获取在Rep或PropMgr字段中表示的所有“联系人”。
我的直觉说在一个结果上加入rep,然后在PropMgr上加入另一个结果集。然后加入结果集并选择distinct。不确定这是否会起作用,如果它看起来更有效。
添加一些额外信息: 一些数据将是
Contact
FullName: Nick
Property
Name: "Happy Place"
PropMgr: Nick
Rep: Sally
当比较两组并且我得到这个组合时,我想选择联系人“Nick”。
请记住我有IEnumerable ContactsList和IEnumerable PropertyList
答案 0 :(得分:0)
尝试按照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
答案 1 :(得分:0)
我没有任何数据可以测试它,但我想这样的事情应该有效:
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();
答案 2 :(得分:0)
解决同样问题的方法很多......
尝试一些低技术的东西:
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));