Лямбда-выражение для соединения
public class CourseDetail
{
public CourseDetail();
public string CourseId { get; set; }
public string CourseDescription { get; set; }
public long CourseSer { get; set; }
}
public class RefUIDByCourse
{
public long CourseSer { get; set; }
public double DeliveredDose{ get; set; }
public double PlannedDose{ get; set; }
public string RefUID { get; set; }
}
public class RefData
{
public double DailyDoseLimit { get; set; }
public string RefName { get; set; }
public string RefUID { get; set; }
public double SessionDoseLimit { get; set; }
}
public class CourseSummary
{
public long CourseSer { get; set; }
public double DeliveredDose{ get; set; }
public double PlannedDose{ get; set; }
Public List<RefData> lstRefData {get;set;}
}
Для одного курсаSer может быть несколько RefUID в RefUIDByCourse
и для каждого RefUID будет одна запись в RefDatap >
У меня есть список CourseDetail, RefUIDByCourse и RefData
теперь для курьера есть в coursedetail, я должен создать список CourseSummary.
одна вещь, которую я могу сделать, это сделать для цикла для coursedetail и получить соответствующие refdata, используя запрос linq, и создать объект курсора и добавить его в список.
, но есть ли способ сделать это одним запросом linq вместо выполнения цикла через
Ответы
Ответ 1
Лямбда для присоединения немного вовлечена - вот простой пример:
List<Person> People = new List<Person>();
List<PersonType> PeopleTypes = new List<PersonType>();
var joined = People.Join(PeopleTypes,
PeopleKey => PeopleKey.PersonType,
PeopleTypesKey => PeopleTypesKey.TypeID,
(Person, PersoneType) => new
{
Name = Person.Name,
TypeID = PersoneType.TypeID
});
Я обычно нахожу синтаксис запроса более читабельным, чем lambdas для присоединения
var joined2 = from p in People
join pType in PeopleTypes
on p.PersonType equals pType.TypeID
where p.Name.StartsWith("whatever")
select new { Name = p.Name, TypeID = pType.TypeID };