LINQ To Object - Как группировать на основе поля - PullRequest
0 голосов
/ 04 апреля 2011

Я пытаюсь использовать LINQ на моем ObservableCollection для группировки некоторых значений в каждом объекте.Для простоты предположим, что MyObject имеет одно свойство:

public List<string> UserNames;

Я хочу написать запрос LINQ, который возвращает все строки в именах пользователей для каждого объекта в коллекции, а затем сгруппировать их по фактическому имени.Мне бы хотелось, чтобы в конечном результате отображалось каждое уникальное имя и счетчик того, сколько раз это имя было найдено в коллекции.

Это легко сделать с T-Sql, но мне не повезлос Linq to Objects.

Спасибо,

Ответы [ 2 ]

0 голосов
/ 04 апреля 2011
collection.SelectMany(myObj => myObj.UserNames)
          .GroupBy(name => name)
          .Select(g => new { Name = g.Key, Count = g.Count() });
0 голосов
/ 04 апреля 2011

Как насчет этого?

var allUnique = myColl.SelectMany(x => x.UserNames).GroupBy(z=>z);

foreach (var s in allUnique )
{
    Console.WriteLine(s.Key.ToString() + " Count: " + s.Count().ToString());
}
...