0

私は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 <0?EmpAgeInMonthToday + 12&temp_year:EmpAgeInMonthTodayとします。

この部分は機能していません。&の左側の式が実行されています。両方の操作を実行したいと思います。これを実現するにはどうすればよいですか?条件が満たされたときに複数の操作を実行するにはどうすればよいですか?これを行うための他の代替方法はありますか?

4

1 に答える 1

0

私はあなたが意味することはこのようなものだと思います:

ExactNoOfMonths = EmpAgeInMonthToday < 0 ?
                      EmpAgeInMonthToday + 12 :
                      temp_year ? 
                          EmpAgeInMonthToday :
                          somethingElse

ただし、whenと。には3番目の値(somethingElse)が必要です。EmpAgeInMonthToday >= 0temp_year = false

編集

あなたが望むものは実際にはかなり複雑です。生年月日をメモリにフェッチし、プレーンC#で計算する方がよいでしょう。

このCodeProjectリンクは、可能なアプローチを提供します。ご覧のとおり、うるう年と月の長さは避けられません。2月28日と3月28日の違いは、平年では1か月、うるう年では1か月と1日です。

于 2012-09-06T10:48:47.547 に答える