У меня есть три списка разных типов:
List<Customer> customerList = new List<Customer>();
List<Product> productList = new List<Product>();
List<Vehicle> vehicleList = new List<Vehicle>();
У меня также есть этот список
List<string> stringList = {"AND","OR"};
Поскольку первый элемент из stringList
есть AND, я хочу сделать внутреннее соединение с customerList
и productList
. Затем я хочу сделать правое соединение vehicleList
с результатом, таким как:
from cust in customerList
join prod in productList on cust.ProductId equals prod.Id
join veh in vehicleList on prod.VehicleId equals veh.Id into v
from veh in v.DefaultIfEmpty()
select new {customerName = cust.Name, customerVehicle=veh.VehicleName}
Я хочу сделать это автоматическим способом, скажем, у меня есть N
количество списков и N-1
число AND
и OR
s, как я могу присоединиться к ним? Кроме того, может быть много списков одного типа. Возможно ли такое? Если не то, что я могу сделать, чтобы сделать это ближе к моей потребности? Спасибо заранее.
ИЗМЕНИТЬ: Я держу списки и их типы в словаре вроде этого:
var listDict = new Dictionary<Type, object>();
Поэтому я могу итерации внутри этого словаря, если это необходимо.