我是LINQ的初学者。我希望执行一些条件操作,然后
(from emp in Employees
let DOB=emp.BirthDate.GetValueOrDefault()
let year=DOB.Year
let month=DOB.Month
let EmpAgeInYearsToday=DateTime.Now.Year-year
let EmpAgeInMonthToday=DateTime.Now.Month-month
let temp_year=(EmpAgeInYearsToday-1)
let ExactNoOfMonths_temp=EmpAgeInMonthToday<0?temp_year:EmpAgeInMonthToday
let ExactNoOfMonths=EmpAgeInMonthToday<0?EmpAgeInMonthToday+12&temp_year:EmpAgeInMonthToday
select new{emp.EmployeeID,DOB,
EmployeeAgeToday=EmpAgeInYearsToday+" Years "+ExactNoOfMonths+" Months ").Dump();
下面,
让ExactNoOfMonths = EmpAgeInMonthToday&lt; 0?EmpAgeInMonthToday + 12&amp; temp_year:EmpAgeInMonthToday
这部分不起作用。 &amp;和左侧的表达单独执行。我想执行这两项操作。如何实现这一目标?满足条件时如何执行多项操作? 有没有其他替代方法可以做到这一点?
答案 0 :(得分:0)
我认为你的意思是这样的:
ExactNoOfMonths = EmpAgeInMonthToday < 0 ?
EmpAgeInMonthToday + 12 :
temp_year ?
EmpAgeInMonthToday :
somethingElse
但是somethingElse
和EmpAgeInMonthToday >= 0
时应该有第三个值(temp_year = false
)。
修改强>
你想要的实际上非常复杂。你最好只在内存中获取出生日期,然后用普通的C#进行计算。
This CodeProject link提供了一种可能的方法。正如您所看到的,您无法避免闰年和月份的长度:2月28日到3月28日之间的差异是正常年份1个月,闰年1个月和1天。