Я думал, что понял Intersect
, но оказалось, что я ошибся.
List<int> list1 = new List<int>() { 1, 2, 3, 2, 3};
List<int> list2 = new List<int>() { 2, 3, 4, 3, 4};
list1.Intersect(list2) => 2,3
//But what I want is:
// => 2,3,2,3,2,3,3
Я могу найти способ, как:
var intersected = list1.Intersect(list2);
var list3 = new List<int>();
list3.AddRange(list1.Where(I => intersected.Contains(I)));
list3.AddRange(list2.Where(I => intersected.Contains(I)));
Есть ли более простой способ в LINQ для этого?
Мне нужно указать, что мне все равно, в каком порядке приведены результаты.
2,2,2,3,3,3,3 также будет отлично.
Проблема в том, что я использую это в очень большой коллекции, поэтому мне нужна эффективность.
Мы говорим об объектах, а не ints. Ints были просто для легкого примера, но я понимаю, что это может изменить ситуацию.