这两个列表最有效的比较方法是什么?

4
我遇到了一个常见问题,想知道更好的解决方法。
假设我有一个整数列表或数组:
var ids = new List<int>();
// pretend I populate 5 or 6 integers

我有一个从数据库中提取的汽车类别,如下所示:
var cars = carRepo.GetAll();

当然,假设Car类有一个Id属性。感觉好像我应该能够做得比仅仅循环遍历汽车并检查其id是否匹配更好一些。就像有一种花哨的Aggregate()或Select()语句可以获取我想要的结果一样。有吗?这是我经常遇到的一个相当普遍的问题。
5个回答

1

不确定您所说的比较是什么意思,但如果您想查看cars集合中是否包含您的List<int>中的所有ID,可以这样做:

var result = cars.All(c => ids.Contains(c.Id)); 

1

All是一个布尔检查,用于检查集合中的所有项目是否与您想要的Where匹配....

carRepo.Where(c => ids.Contains(c.Id));

1

您可以执行一个简单的内连接,以选择所有在ID列表中的汽车:

var query = from car in cars
            join id in ids on car.Id equals id
            select car;

0
var filtered = cars.Where(car => ids.Contains(car.Id));

0

例如:

bool isEqual = ids.Count == cars.Count && cars.All(car=>ids.Contains(car.Id));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接