1

ログインしているクライアントの辞書を維持しています_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

一致する profileID がその新しいクライアントの BuddyList にあるすべての辞書 clientID のリストを取得したいと考えています。

hereに見られるように Intersect メソッドが機能すると推測していますが、少なくとも 1 つのforeachループを作成せずにこれをまとめる方法がよくわかりません。

- アップデート -

clientID は == ProfileID ではありません。これらの値は異なります。

4

2 に答える 2

1

あなたの質問を正しく読んだと仮定して、これを試してください:

var matches = _clientList
            .Where(c => c.Value.BuddyList.Any(b => b.ProfileID == c.Value.ProfileID))
            .Select(c => c.Key)
            .ToList();
于 2012-04-16T20:23:06.450 に答える
1

あなたの質問が正しいと仮定すると、次のようになります。

var matches = _clientList.ToList()
    .Select(x => x.Key)
    .Intersect(currentNewsFeed.BuddyList.Select(x => x.ProfileId))
    .ToList();
于 2012-04-16T20:24:31.807 に答える