У меня запрос из базы данных:
List<myClass> items = new List<myClass>(from i in context
select new myClass
{
A = i.A,
B = "", // i doesn't know this, this comes from elsewhere
C = i.C
}
У меня также есть другой запрос, делающий аналогичную вещь:
List<myClass2> otherItems = new List<myClass2>(from j in context
select new myClass2
{
A = j.A, // A is the intersection, there will only be 1 A here but many A's in items
B = j.B
}
В действительности эти классы намного больше и запрашивают данные, которые разделяются не только базой данных, но и сервером. Можно ли использовать запрос LINQ для заполнения свойства B для всех items
, где пересекаются элементы .A? Все встроенные предикаты LINQ отображаются только для выполнения агрегатов, выборок или выражений bool.
В моем мозгу было что-то вроде этого, но это все выключено:
items.Where(x => x.B = (otherItems.Where(z => z.A == x.A).Single().B));
Или я нелепо пытаюсь заставить эту работу работать в LINQ и должен просто отказаться от нее в пользу цикла for, где фактическая настройка становится тривиальной? Из-за крайних сроков я буду прибегать к циклу for (и, возможно, в конечном итоге он станет намного более читабельным в долгосрочной перспективе), но возможно ли это сделать? Нужен ли метод расширения, чтобы добавить специальный предикат, чтобы разрешить это?