这个表达式是否需要优化?

Cau*_*ium 2 .net c# optimization

我不喜欢这个功能的外观.没有"魔术弦",有没有办法让它看起来不那么难看.

private static bool Inconsistent(AdStats adStat)   {
  return 
    adStat.Daily.Impressions != adStat.Hourly.Sum(h => h.Value.Impressions) ||
    adStat.Daily.Clicks != adStat.Hourly.Sum(h => h.Value.Clicks) ||
    adStat.Daily.Spent != adStat.Hourly.Sum(h => h.Value.Spent) ||
    adStat.Daily.SocialImpressions != adStat.Hourly.Sum(h => h.Value.SocialImpressions) ||
    adStat.Daily.SocialClicks != adStat.Hourly.Sum(h => h.Value.SocialClicks) ||
    adStat.Daily.SocialSpent != adStat.Hourly.Sum(h => h.Value.SocialSpent) ||
    adStat.Daily.UniqueImpressions != adStat.Hourly.Sum(h => h.Value.UniqueImpressions) ||
    adStat.Daily.UniqueClicks != adStat.Hourly.Sum(h => h.Value.UniqueClicks) ||
    adStat.Daily.SocialUniqueImpressions != adStat.Hourly.Sum(h => h.Value.SocialUniqueImpressions) ||
    adStat.Daily.SocialUniqueClicks != adStat.Hourly.Sum(h => h.Value.SocialUniqueClicks);
}
Run Code Online (Sandbox Code Playgroud)

Ani*_*Ani 5

我认为通过"优化",你的意思是"减少冗余"又名不要重复自己

从本质上讲,您有一堆指标.您想要检查,对于任何这些指标,每天广告的指标值是否与每小时的指标总和不同.

一旦你想到这一点,你可以做到:

Func<Stat, int>[] metricGetters = 
{
   stat => stat.Impressions,
   stat => stat.Clicks,
   // .. etc. etc.
};

return metricGetters.Any(getter => getter(adStat.Daily) 
                                != adStat.Hourly.Sum(h => getter(h.Value)));
Run Code Online (Sandbox Code Playgroud)