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

时间:2011-06-15 22:56:54

标签: c# linq

我遇到了一个常见的问题,我想知道更好的方法。

说我有一个列表或一组int:

var ids = new List<int>();
// pretend I populate 5 or 6 integers

我从数据库中提取了一类汽车:

var cars = carRepo.GetAll();

当然,让我们说Car类有Id属性。它感觉好像我应该能够做更好的事情,而不仅仅是循环汽车并检查它。就像有某种花哨的Aggregate()或Select()语句可以得到我想要的。在那儿?这是我一直遇到的非常常见的事情。

5 个答案:

答案 0 :(得分:1)

通过比较不确定您的意思,但如果您想在cars集合中查看List<int>中的所有ID,则可以执行此操作

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

答案 1 :(得分:1)

所有都是布尔检查,集合中的所有项目都匹配你想要的地方......

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

答案 2 :(得分:1)

您可以执行一个简单的Inner Join来选择ID列表中所有带ID的车辆:

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

例如:

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