使用LINQ获取具有相同value属性的所有对象?

Bojan Tomic

我有一个像这样的物品清单:

Item1: Id=1, Name="name1"
Item2: Id=2, Name="name1"
Item3: Id=3, Name="Test2"

我要执行的是获取像这样的简化列表:

Item1: Id=1, Name="name1"
Item2: Id=2, Name="name1"

因此,基本上我想拥有具有相同给定属性值的项目。因此,所有具有给定属性值的项目都是相同的。

我已经尝试将它们分组,但是我不知道下一步该怎么做。

items.OrderBy(x => x.Name);

编辑解释。

似乎我不明白这个问题。答案是预期的,但这里已经有解决方案:

正确答案!

奥利维尔·雅各·德斯科姆斯

使用此输入...

Item1: Id=1, Name="name1"
Item2: Id=2, Name="name1"
Item3: Id=3, Name="name3"
Item4: Id=4, Name="Test2"
Item5: Id=5, Name="name1"
Item6: Id=6, Name="name3"

...这使所有项目不止一次出现:

var result = items
    .GroupBy(x => x.Name)        // Group by name
    .Where(g => g.Count() > 1)   // Select only groups having duplicates
    .SelectMany(g => g);         // Ungroup the groups

结果:

Item1: Id=1, Name="name1"
Item2: Id=2, Name="name1"
Item5: Id=5, Name="name1"
Item3: Id=3, Name="name3"
Item6: Id=6, Name="name3"

...这会使所有项目不止一次出现并重新编号

var result = items
    .GroupBy(x => x.Name)        // Group by name
    .Where(g => g.Count() > 1)   // Select only groups having duplicates
    .SelectMany(g => g)          // Ungroup the groups
    .Select((x, i) => new Item { Id = i + 1, Name = x.Name });

结果:

Item1: Id=1, Name="name1"
Item2: Id=2, Name="name1"
Item3: Id=3, Name="name1"
Item4: Id=4, Name="name3"
Item5: Id=5, Name="name3"

请注意,Select有一个重载提供了从零开始的索引。

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)

但是,示例输入太简单了,因此很难说出在更复杂的情况下会发生什么。

如果要使用特定名称输入:

string specificName = "name1";
var result = items
    .Where(x => x.Name == specificName);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用LINQ获取具有完全相同值的所有属性?

如何使用Linq确定List <T>中的所有对象是否具有相同的属性值

对象对象数组。获取具有相同属性的所有值的长度

遍历JSON对象以获取具有属性的所有对象

如何使用xmllint xpath获取具有相同标签名称的所有属性

Linq:基于属性获取我的所有子对象

LINQ:以高性能方式从传入的 IEnumerable<string> 中获取具有匹配字符串属性的所有对象

在具有相同value属性的数组中查找对象

使用LINQ从列表中获取具有特定属性最大值的对象

在循环中设置对象属性会导致所有属性具有相同的值

Linq 确保没有两个对象具有相同的属性值

组合具有相同属性的对象

嵌套对象:更新所有具有相同名称的属性

JSDoc是一个对象,所有属性(无论名称如何)都具有相同的类型

在Java中删除具有相同属性的所有对象

检索列表中的所有对象在python中的属性是否具有相同的值

打字稿:声明对象上的所有属性必须具有相同的类型

使用反射获取对象的所有属性-但仅获取对象为其具有值的属性(不是默认值或null)

使用 ramda 在嵌套数组中查找具有给定 id 的对象,获取除子数组之外的所有属性

如果 hashMap 具有相同的键名,我如何获取对象数组中的所有值

如何从任何jquery对象中获取具有相同类名的所有元素?

过滤对象并获取具有相同值javascript的所有项目

如何使用LINQ to XML连接具有相同名称值的所有子元素

获取所有具有操作系统作为属性的 AD 对象

获取具有其他用户对象属性的所有用户组

获取Python中的所有对象属性?

获取所有属性java对象

获取对象的所有属性的列表

获取对象具有属性错误