2011-06-15 136 views
4

我遇到了一個常見問題,我想知道更好的方法來解決它。什麼是比較這兩個列表最有效的方法?

說我有INTS的列表或數組:

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

而且我有一類車的我從數據庫中提取這樣的:

var cars = carRepo.GetAll(); 

和當然,我們說的汽車類有一個Id屬性。它感覺好像我應該能夠做一些更好的事情,而不僅僅是循環汽車和檢查它對ID。就像有某種花哨的Aggregate()或Select()語句可以得到我想要的。在那兒?這是我常常碰到的一件很常見的事情。

回答

1

不知道你的比較,但如果你想在cars集合中看到您的List<int>具有所有的ID,你可以做到這一點

var result = cars.All(c => ids.Contains(c.Id)); 
0
var filtered = cars.Where(car => ids.Contains(car.Id)); 
1

所有的意思是一個布爾檢查在你想去的地方收集比賽的所有項目....

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

您可以執行一個簡單的Inner Join選擇所有汽車行駛在ID列表中的ID:

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

作爲例子:

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