Eri*_*ric 2 c# linq lambda generic-list
我将使用一个包含大约500,000个项目的集合,并且正在寻找一种获得所有重复项目的好方法.仔细阅读这篇文章后,我看到最流行的解决方案是使用散列集.但是,如果我想让所有颜色为红色的汽车不仅仅是Car4和Car5呢?
Car1.Color = Red;
Car2.Color = Blue;
Car3.Color = Green;
Car4.Color = Red;
Car5.Color = Red;
Run Code Online (Sandbox Code Playgroud)
鉴于问题,这将是一个相当快速的方法吗?
编辑:我在那篇文章中看到,下面的代码可以很容易地改变,以满足我的需要.而且我不确定是否有更好的方法来解决问题,但我会留下帖子只是为了看.
var duplicates = from car in cars
group car by car.Color into grouped
from car in grouped
select car;
Run Code Online (Sandbox Code Playgroud)
您可以使用Enumerable.ToLookup扩展方法按颜色对汽车进行分组并检索一种颜色的所有汽车:
var cars = new List<Car> { car1, car2, car3, car4, car5 };
var lookup = cars.ToLookup(car => car.Color);
var redCars = lookup[Red];
// redCars == { car1, car4, car5 }
Run Code Online (Sandbox Code Playgroud)