我有一个像这样的物品清单:
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] 删除。
我来说两句