public class Test { int i; string s; } List<Test> testList = new List<Test>(); //assume there are some values in it. List<int> intList = new List<int>(){ 1,2,3};
Как мне сказать, получить items from testList where i is in intList используя linq для объектов.
items from testList where i is in intList
что-то вроде List<Test> testIntList = testList.Where(t=>t.i in intList)
List<Test> testIntList = testList.Where(t=>t.i in intList)
Технически это будет:
List<Test> testIntList = testList.Where(t => intList.Contains(t.i)).ToList();
Однако, это может быть медленно, если intList большое, так как List<T>.Contains выполняет поиск в O (n). Более быстрый подход - использовать HashSet<T>:
intList
List<T>.Contains
HashSet<T>
HashSet<int> intList = new HashSet<int>(){ 1,2,3 };
Это также было бы интересно и хорошо работало:
List<test> finalList = testList.Join(intList, test => test.id, i => i, (t, i) => t).ToList();
Вы знаете, когда вы объединяете таблицы в SQL SELECT?Вот как это сделать, используя Linq to Objects.
SELECT