【发布时间】:2018-01-26 18:42:40
【问题描述】:
我有一群朋友,他们有 0 、 1 或许多与之相关的令牌。 我试图找出朋友分享同一个令牌的次数。所以如果friend1有令牌1、2和3,friend2有令牌1和2,朋友3有令牌1,2和3。它将返回朋友2和friend1共享2个令牌,而friend3 和friend1分享3个代币等。 我有对令牌进行分组并获取与它们相关联的朋友数量的代码。我只是不确定如何与朋友共享令牌。我在想可能有一些方法可以用 linq 做到这一点,但不确定如何或是否有另一种更好的方法。
var summaryOfFriendsAndTokens = distinctFriendList.Where(x => x.oToken != null) // Check for null in the model
.SelectMany(x => x.oToken) // Flatten
.GroupBy(x => x.TokenId) // Group
.Select(group => new // Project
{
ItemName = group.Key,
TotalQuantity = group.Count()
})
.ToList();
;
}
}
public class Token {
public int TokenId { get; set; }
}
public class Friend {
public List<Token> otoken = new List<Token>();
private int friendId = -1;
public int FriendID {
get { return friendId; }
set { friendId = value; }
}
public List<Token> oToken {
get { return otoken; }
set { otoken = value; }
}
}
【问题讨论】:
-
不会是
List<Token> sharedTokens = friend1.oToken.Intersect(friend2.oToken).ToList();之类的吗?