У меня есть 2 списков obj1
и obj2
Каким образом CLR интерпретирует следующий LINQ запрос
var list1 = new List<obj1>();
var list2 = new List<obj2>();
obj1 и obj2 разделяет строковое свойство с именем имени, мне нужно фильтровать песни1 значений имени свойства, которые доступны в списке2, поэтому я сделал следующее:
var filteredlist = list1.Where(o => list2.Select(o2 => o2.name)
.Distinct()
.Contains(o.name));
- вышеупомянутый запрос Linq эквивалентен следующему?
var distinctNames = list2.Select(o2 => o2.name).Distinct();
var filteredlist = list1.Where(o => distinctNames.Contains(o.name));
мой вопрос в первом запросе делает CLR сделать переменную Темп провести distinctNames, даже если я не создавал его сам, как во втором запросе? или он будет переделать Select Distinct из списка2 с каждой итерацией?
, если он не создает временную переменную, как бы вы могли написать этот запрос в одной строке?