我正在维护使用_clientList.Add(clientIDGuid, newsfeedClient);
NewsfeedClient类:
public class NewsfeedClient
{
/// <summary>
/// Represents Newsfeed's own clientID
/// </summary>
public string ClientIDGuid { get; set; } // also adding the dictionary's ID
/// <summary>
/// Represents the logged in client's session ID
/// </summary>
public string SessionID { get; set; }
public string Nickname { get; set; }
public int ProfileID { get; set; }
public GeoLocation Location { get; set; }
public List<MyDB.Models.Buddy> BuddyList { get; set; }
[ScriptIgnore]
public DateTime LastResponseTime { get; set; }
public class GeoLocation
{
public float Latitude { get; set; }
public float Longitude { get; set; }
}
}
Buddy
对象包含ProfileID
属性。
我想获得所有字典clientID的列表,其中匹配的profileID位于该新客户端的BuddyList中。
我猜测Intersect方法会发挥作用,如here所示,但我不太确定如何在不创建至少一个foreach
循环的情况下将它们放在一起。
- 更新 -
clientID不是== ProfileID这些值是不同的。
答案 0 :(得分:1)
假设我的问题是正确的,应该是这样的:
var matches = _clientList.ToList()
.Select(x => x.Key)
.Intersect(currentNewsFeed.BuddyList.Select(x => x.ProfileId))
.ToList();
答案 1 :(得分:0)
试试这个,假设我已经正确地阅读了你的问题:
var matches = _clientList
.Where(c => c.Value.BuddyList.Any(b => b.ProfileID == c.Value.ProfileID))
.Select(c => c.Key)
.ToList();