我有一个字段,我正在执行一个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字段(来自子查询)与主查询中其他字段位于同一行。
我该如何做到这一点?
答案 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
。请注意,我重命名了您拥有的所有各种别名。