我已经玩了一段时间了,只是无法理解。我是 Linq、C# 和这些 Lambda 的新手。
我想要做的是根据每个实体的两个属性对实体进行分组。这是一个消息实体:
Message
{
int UserId; //The user generating the message
int UserIdTo; //The receiver of the message
|...| // Other stuff
}
所以,我希望这些 UserId=5, UserIdTo=6 和 UserId=6, UserIdTo=5 位于同一个组中。
这是我的开始:
var groupList = (from m in db.Messages
where m.UserId == userId || m.UserIdTo == userId
join u in db.Users on m.UserId equals u.UserId
join w in db.Users on m.UserIdTo equals w.UserId
orderby m.MessageTimestamp descending
select new DomMessage
{
MessageId = m.MessageId,
MessageContent = m.MessageContent,
MessageTimestamp = m.MessageTimestamp,
UserId = m.UserId,
UserIdTo = m.UserIdTo,
ScreenName = u.ScreenName,
ScreenName2 = w.ScreenName
}).GroupBy(m=>m.UserId == userId)
.ToList();
这是按 UserId 分组的第一步,但我一直在尝试扩展它,以便结果组中的任何 UserId 值等于其他地方的 UserIdTo 将其添加到该组?
编辑:我需要将结果放入列表,因为我还需要处理其他事情......
谢谢!