2012-02-21 37 views
0

我想要做一个如果声明在我的查询内,但我不知道如何。我想执行:如何通过条件加入?

join asoc2 in Personnels 
on comp.Secondary_associate equals asoc2.Dpinitials 

如果有Second_Person数据可用。任何想法如何做到这一点?让我知道是否有更简单的方法。这是我的完整查询:

(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() 

现在,它只是显示null,因为* comp.Second_Person *不存在。

+0

你尝试加入'那里comp.Second_Person!= null'毕竟加入之前选择新的? – MarcinJuraszek 2012-02-21 21:21:41

+2

当您避开查询理解语法并改为使用方法链式样时,根据运行时值有条件地组合查询的各个部分和部分将变得微不足道。 – 2012-02-21 21:23:33

+0

@KirkWoll你会提供一些细节吗? – 2012-02-22 03:46:05

回答

0

您可以使用“其中”在LINQ过滤数据