猿问

强制计算年的持续时间

我有一个要求,我必须强制将持续时间显示为两年完成。例如,2016 年至 2018 年期间在应用程序中在线活跃的任何客户都应被视为在应用程序中完成两年。这看起来很简单,并使用以下内容Linq来使其工作:


var result = (from c in db.Users

              where c.UserId == id && (c.Start.Year >= 2016 && c.End.Year <= 2018)

              select c).ToList ();


 int years = 0;

 if (result.Count () > 0)

 {

     years = 2;

 }

 else

 {

    //Logic goes here

 }

所以可以看出我是在强迫它计算两年的持续时间。根据这一点,我将授予用户 20% 的系统忠诚度。尽管构建逻辑有点复杂。同样,在该范围内,用户可能在 2016 年至 2017 年期间处于活跃状态。因此这些用户将没有资格获得忠诚度。


如何才能使上述功能在两种条件下工作两年,以及对于不符合条件的用户?任何想法,将不胜感激。


慕的地8271018
浏览 125回答 2
2回答

桃花长相依

我想这就是你所追求的。它获取用户并确定开始年份和结束年份之间的时间跨度,将该值分配给年份,然后检查它是否小于 2。如果是,则执行您的逻辑。我假设 UserId 是唯一的,并且始终至少有一个条目。var result = (    from c in db.Users    where c.UserId == id    select c).Single();int years =  result.End.Year - result.Start.Year;if (years <= 2){//Logic goes here}

偶然的你

您也许可以计算 Linq 查询中的时间跨度。var&nbsp;list&nbsp;=&nbsp;cItems.Where(x&nbsp;=>&nbsp;((TimeSpan)(x.End&nbsp;-&nbsp;x.Start)).Days&nbsp;>&nbsp;730).ToList();
随时随地看视频慕课网APP
我要回答