Lambda表达式为加入
问题描述:
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;}
}
对于一个courseSer可以有多个RefUID在RefUIDByCourse 和每一个都会有一个纪录RefDataLambda表达式为加入
我有CourseDetail,RefUIDByCourse和RefData 的列表现在为courseser存在coursedetail我必须创建CourseSummary列表。
我可以做的一件事是做loop for coursedetail并使用linq查询获取相应的refdata并创建一个课程摘要的对象并将它添加到列表中。
但有没有办法通过一个LINQ查询的,而不是做环通
答
拉姆达做的加入是涉及到一点 - 这里有一个简单的例子:
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 };
请发布您迄今为止编写的代码。人们通常不喜欢只为你写代码。事实上,这是一个工作描述,而不是一个问题。 – 2011-02-18 06:25:34
对不起米奇,因为公司的政策,我不能提供的代码...但我会尝试复制相同的一些不同的例子,并张贴它。 – Radhi 2011-02-18 06:48:16