Я некоторое время играл с этим и просто не могу его получить. Я новичок в Linq, C# и этих предметах Lambda.C# linq group по разным клавишам в одном объекте
Что я хочу сделать, это группировать объекты в соответствии с двумя свойствами для каждого объекта. Это предприятие сообщение:
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 где-то еще добавить к этой группе?
EDIT: Мне нужен результат, чтобы пойти в список, потому что есть другие вещи, мне нужно с ним делать ...
Спасибо!
спасибо за это, но я получаю ту же проблему, где, например, ваши записи 'new {To = 1, From = 2 , Message = "msj1"} 'и' new {To = 2, From = 1, Message = "msj3"} 'не сгруппированы вместе – testpattern
@testpattern Вы когда-нибудь пробовали это на ac onsole App? Или теоретически. Я могу отправить вам экран печати, чтобы показать, что он работает. –
Адриан, ты прав, он делает то, что мне нужно, спасибо! Также, хорошая идея для меня попробовать вещи на консольном приложении. – testpattern