用于连接的 Lambda 表达式 [英] Lambda Expression for join

查看:39
本文介绍了用于连接的 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,RefUIDByCourse 中可以有多个 RefUID对于每个 RefUID,RefData 中都会有一个记录

For one courseSer there can be multiple RefUID in RefUIDByCourse and for every RefUID there will be one record in RefData

我有 CourseDetail、RefUIDByCourse 和 RefData 的列表现在对于存在于 coursedetail 中的课程,我必须创建 CourseSummary 列表.

我能做的一件事是为 coursedetail 做 for 循环并使用 linq 查询获取相应的 refdata 并创建一个 coursesummary 对象并将其添加到列表中.

但是有什么办法可以通过一个 linq 查询而不是循环进行

推荐答案

Join 的 lambda 有点复杂 - 这是一个简单的例子:

The lambda for a Join is a bit involved - here's a simple example:

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 更具可读性

I usually find the query syntax a lot more readable than lambdas for joining

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

这篇关于用于连接的 Lambda 表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆