2015-06-12 3 views
0

Я хотел бы выполнить функцию GroupBy с помощью LinqJS, но, кажется, не работает хорошо ...GroupBy с использованием LinqJS

Мой объект:

My object

Мой код:

Enumerable.From(obj).GroupBy('{name: $.name}', null, '{name: $.name}').ToArray(); 

Результат:

enter image description here

Должно быть:

{name: toto, name: tata}

+0

вам нужно сделать, чтобы получить уникальные имена в массиве? Enumerable.From (obj) .Выберите ("x => x.name"). Distinct(). ToArray(); Может быть, это? –

+0

То, что вам нужно понять, это то, что если вы когда-либо проецируете объект на ключ, вы _must_ обеспечиваете сравнение. Не имеет смысла сравнивать объекты javascript (при условии, что вы не определяете функцию ['valueOf()'] (http://stackoverflow.com/q/10339506/390278)), поэтому вам это нужно. –

ответ

2

В C#, требуемая функция будет выглядеть следующим образом:

var result = list.GroupBy(x => x.name, x => x.name, (baseName, names) => new {name = baseName}).ToArray(); 

Так, в LinqJS, он будет выглядеть следующим образом:

var result = Enumerable.From(obj).GroupBy('x => x.name', 'x => x.name', 'baseName, names => {name: baseName}').ToArray(); 

enter image description here

Но, если вам просто нужно, чтобы получить уникальные имена, вы можете просто использовать:

var result = Enumerable.From(obj).Select("x => x.name").Distinct().ToArray(); 

enter image description here

+0

Спасибо, что это работает. ;) – tonymx227

Смежные вопросы