试图在主linq查询中获取linq子查询

时间:2015-04-14 14:58:48

标签: linq

我有一个字段,我正在执行一个linq子查询,以便从列表中获取第一个可以正常工作的值。

子查询代码

(from tpa in TrafficPreApplications
join tpl in TrafficPixelLogs on tpa.TrafficHitId equals tpl.TrafficHitId
where tpl.PixelAmount > 0
    select tpl.PixelAmount).First()

我有一个主要的linq查询,我正在执行连接以获得单行数据(工作正常)。

我想在主查询中实现子查询 ,其中显示一个 tpl.PixelAmount 字段。

以下是主要查询:

from p in Partners
join tp in TrafficPartners on p.Id equals tp.PartnerId
join th in TrafficHits on tp.Id equals th.TrafficPartnerId
join tpa in TrafficPreApplications on th.Id equals tpa.TrafficHitId
select new { tpa.Firstname, tpa.Lastname, p.PartnerAbbrev, tp.TrafficLPPath, tp.TrafficFLPath, tpa.Laststep, tpa.DateCreated, tpa.TargetState }

我希望tpl.PixelAmount字段(来自子查询)与主查询中其他字段位于同一行。

我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

你可以:

select new { 
    tpa.Firstname, tpa.Lastname, p.PartnerAbbrev, tp.TrafficLPPath, tp.TrafficFLPath, tpa.Laststep, tpa.DateCreated, tpa.TargetState,
    PixelAmount = 
        (from tpa2 in TrafficPreApplications
         join tpl2 in TrafficPixelLogs on tpa2.TrafficHitId equals tpl2.TrafficHitId
         where tpl2.PixelAmount > 0
         select tpl2.PixelAmount).First()
}

而不是您正在使用的select。请注意,我重命名了您拥有的所有各种别名。