2011-02-18 158 views
18
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查詢的,而不是做環通

+5

請發佈您迄今爲止編寫的代碼。人們通常不喜歡只爲你寫代碼。事實上,這是一個工作描述,而不是一個問題。 – 2011-02-18 06:25:34

+0

對不起米奇,因爲公司的政策,我不能提供的代碼...但我會嘗試複製相同的一些不同的例子,並張貼它。 – Radhi 2011-02-18 06:48:16

回答

35

拉姆達做的加入是涉及到一點 - 這裏有一個簡單的例子:

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 };