Как я могу присоединиться к двум спискам, используя linq или лямбда-выражения
У меня есть два списка List<WorkOrder>
и List<PlannedWork>
Я хотел бы присоединиться к двум спискам номера рабочего порядка, как описано ниже. Другими словами, у меня есть список запланированных работ, но мне нужно знать описание работы для workOrderNumber.
Я новичок как в выражениях linq, так и в лямбда-выражениях, и у меня пока нет моей головы, обернутой вокруг них.
class WorkOrder
{
public int WorkOrderNumber { get; set; }
public string WorkDescription { get; set; }
}
class PlannedWork
{
public int WorkOrderNumber { get; set; }
public DateTime ScheduledDate { get; set; }
}
Ответы
Ответ 1
Похоже, вы хотите что-то вроде:
var query = from order in workOrders
join plan in plans
on order.WorkOrderNumber equals plan.WorkOrderNumber
select new
{
order.WorkOrderNumber,
order.Description,
plan.ScheduledDate
};
Ответ 2
Способ сделать это с использованием методов расширения, вместо синтаксиса запроса linq, будет следующим:
var results = workOrders.Join(plans,
wo => wo.WorkOrderNumber,
p => p.WorkOrderNumber,
(order,plan) => new {order.WorkOrderNumber, order.WorkDescription, plan.ScheduledDate}
);
Ответ 3
public class State
{
public int SID { get; set; }
public string SName { get; set; }
public string SCode { get; set; }
public string SAbbrevation { get; set; }
}
public class Country
{
public int CID { get; set; }
public string CName { get; set; }
public string CAbbrevation { get; set; }
}
List<State> states = new List<State>()
{
new State{ SID=1,SName="Telangana",SCode="+91",SAbbrevation="TG"},
new State{ SID=2,SName="Texas",SCode="512",SAbbrevation="TS"},
};
List<Country> coutries = new List<Country>()
{
new Country{CID=1,CName="India",CAbbrevation="IND"},
new Country{CID=2,CName="US of America",CAbbrevation="USA"},
};
var res = coutries.Join(states, a => a.CID, b => b.SID, (a, b) => new {a.CName,b.SName}).ToList();