C# 如果通过条件,如何进行连接?

C# 如果通过条件,如何进行连接?,c#,linq,join,C#,Linq,Join,我想在我的查询中执行一个if语句,但我不确定如何执行。我想表演: join asoc2 in Personnels on comp.Secondary_associate equals asoc2.Dpinitials 如果有第二个人数据可用。有什么办法吗?如果有更简单的方法,请告诉我。以下是我的完整查询: (from sc in Data join comp in Companies on sc.Company equals comp.Company join anl in Personne

我想在我的查询中执行一个if语句,但我不确定如何执行。我想表演:

join asoc2 in Personnels
on comp.Secondary_associate equals asoc2.Dpinitials
如果有第二个人数据可用。有什么办法吗?如果有更简单的方法,请告诉我。以下是我的完整查询:

(from sc in Data
join comp in Companies
on sc.Company equals comp.Company
join anl in Personnels  
on sc.SalesP_initials equals anl.Dpinitials
join asoc1 in Personnels
on comp.First_associate equals asoc1.Dpinitials
join asoc2 in Personnels
on comp.Second_Person equals asoc2.Dpinitials
select new {
MyCompany = sc.Company,
ReleaseDate = sc.Release_date,  
WebHeadline = sc.Short_subject,
EmailTo =   
    anl.Last_name + ", " + anl.First_name + " <" + anl.Email_address.Trim() + ">; " 
    + 
    asoc1.Last_name + ", " + asoc1.First_name + " <" + asoc1.Email_address.Trim() + ">; " 
    +
    asoc2.Last_name + ", " + asoc2.First_name + " <" + asoc2.Email_address.Trim() + ">"
}).FirstOrDefault ()
(来自数据中的sc)
加入公司
论sc公司等于公司
加入anl人员
在sc.SalesP_上,首字母等于anl.DPU首字母
加入asoc1的人员
在comp.First_associate上等于asoc1.dp首字母
加入asoc2的人员
在comp.Second_中,Person等于asoc2.dp的首字母
选择新的{
MyCompany=sc.公司,
ReleaseDate=sc.Release\u日期,
WebHeadline=sc.Short\u主题,
EmailTo=
“姓氏+”,“+anl.姓氏+”;”
+ 
asoc1.Last_name+”,“+asoc1.First_name+”;”
+
asoc2.Last_name+,“+asoc2.First_name+”
}).FirstOrDefault()

现在,它只显示空值,因为*comp.Second\u Person*不存在。

您可以在linq中使用“where”来过滤数据

您是否尝试添加
where comp.Second\u Person!=null
在所有联接之后和选择“新建”之前?当您避开查询理解语法而使用方法链接样式时,根据运行时值有条件地组合查询的各个部分变得很简单。@KirkWoll您能提供一些详细信息吗?