Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果没有具有相应实体的值,Linq将返回数据_C#_Linq - Fatal编程技术网

C# 如果没有具有相应实体的值,Linq将返回数据

C# 如果没有具有相应实体的值,Linq将返回数据,c#,linq,C#,Linq,查询示例: var results = await campaignList .GroupBy(x => x.Campaign) .Select(c => new ReportModel { CampaignId = c.Key.Id, CoregName = c.Key.Name, TotalVisitors = startDate == null ||

查询示例:

    var results = await campaignList
        .GroupBy(x => x.Campaign)
        .Select(c => new ReportModel
        {
            CampaignId = c.Key.Id,
            CoregName = c.Key.Name,
            TotalVisitors = startDate == null || endDate == null ? c.Key.LogPixelCalls.Count : c.Key.LogPixelCalls.Count(x => x.CreatedOn >= startDate && x.CreatedOn <= endDate),
            TotalUsers = c.Count(),
            TotalPaidUsers = c.Count(x => x.UserSignature.StripeCustomerId != null),
            TotalUserConversion = !c.Any() || c.Key.LogPixelCalls.Count == 0 ? 0 : (decimal)c.Count() / (decimal)c.Key.LogPixelCalls.Count * 100,
            TotalPaidUserConversion = c.Count(x => x.UserSignature.StripeCustomerId != null) == 0 || !c.Any() ? 0 : (decimal)c.Count(x => x.UserSignature.StripeCustomerId != null) / (decimal)c.Count() * 100
        })
        .OrderByDescending(c => c.TotalPaidUsers)
        .ToListAsync();

首先对活动数据进行分组/求和,然后将分组结果加入到活动中

var cd = campaigns.GroupBy (c => new {c.ID} ).Select (cp =>
     new {
        cId= cp.Key.ID,
        TotalUsers = cp.Count(),
        TotalSum= cp.Sum( x=>x.UsersByCampaign)
        ...
        } );

var results = campaignList.ForEach( cl => cd.Where( cdd => cdd.cId == cl.Id)
.Select(cdd => new { CampaignId  = cdd.CId, TotalVisitors  = cdd.TotalUsers , .. })
.DefaultIfEmpty( new { CampaignId  = cdd.CId, TotalVisitors  =0 , .. });

首先对活动数据进行分组/求和,然后将分组结果加入到活动中

var cd = campaigns.GroupBy (c => new {c.ID} ).Select (cp =>
     new {
        cId= cp.Key.ID,
        TotalUsers = cp.Count(),
        TotalSum= cp.Sum( x=>x.UsersByCampaign)
        ...
        } );

var results = campaignList.ForEach( cl => cd.Where( cdd => cdd.cId == cl.Id)
.Select(cdd => new { CampaignId  = cdd.CId, TotalVisitors  = cdd.TotalUsers , .. })
.DefaultIfEmpty( new { CampaignId  = cdd.CId, TotalVisitors  =0 , .. });
我喜欢这样:

var resultsWithEmtpyCampaigns = campaigns.GroupJoin(
                results,
                camp => camp.Id,
                campResult => campResult.CampaignId,
                (x, y) => y.Select(c => new ReportModel
                {
                    CampaignId = y.FirstOrDefault().CampaignId,
                    CoregName = y.FirstOrDefault().CoregName,
                    TotalVisitors = y.FirstOrDefault().TotalVisitors,
                    TotalUsers = y.FirstOrDefault().TotalUsers,
                    TotalPaidUsers = y.FirstOrDefault().TotalPaidUsers,
                    TotalUserConversion = y.FirstOrDefault().TotalUserConversion,
                    TotalPaidUserConversion = y.FirstOrDefault().TotalPaidUserConversion,
                    ReportCountryList = y.FirstOrDefault().ReportCountryList
                })
                     .DefaultIfEmpty(new ReportModel
                     {
                         CampaignId = x.Id,
                         CoregName = x.Name,
                         TotalVisitors = 0,
                         TotalUsers = 0,
                         TotalPaidUsers = 0,
                         TotalUserConversion = 0,
                         TotalPaidUserConversion = 0
                     }))
                .SelectMany(g => g).ToList();

            return
                resultsWithEmtpyCampaigns;
我喜欢这样:

var resultsWithEmtpyCampaigns = campaigns.GroupJoin(
                results,
                camp => camp.Id,
                campResult => campResult.CampaignId,
                (x, y) => y.Select(c => new ReportModel
                {
                    CampaignId = y.FirstOrDefault().CampaignId,
                    CoregName = y.FirstOrDefault().CoregName,
                    TotalVisitors = y.FirstOrDefault().TotalVisitors,
                    TotalUsers = y.FirstOrDefault().TotalUsers,
                    TotalPaidUsers = y.FirstOrDefault().TotalPaidUsers,
                    TotalUserConversion = y.FirstOrDefault().TotalUserConversion,
                    TotalPaidUserConversion = y.FirstOrDefault().TotalPaidUserConversion,
                    ReportCountryList = y.FirstOrDefault().ReportCountryList
                })
                     .DefaultIfEmpty(new ReportModel
                     {
                         CampaignId = x.Id,
                         CoregName = x.Name,
                         TotalVisitors = 0,
                         TotalUsers = 0,
                         TotalPaidUsers = 0,
                         TotalUserConversion = 0,
                         TotalPaidUserConversion = 0
                     }))
                .SelectMany(g => g).ToList();

            return
                resultsWithEmtpyCampaigns;

检查我的编辑,尝试使用GroupJoin,但从活动组c中的c获取空引用errorvar counts=by;var resultinho=来自活动列表中的cl加入c在cl上的计数。活动id等于c.id….您能在lambda linq中写入此值吗?检查我的编辑,尝试使用GroupJoin,但获取空引用错误var counts=来自活动c组中的c通过;var resultinho=来自活动列表中的cl在cl上加入c计数。活动id等于c.id…您能用lambda linq写这个吗?