2016-09-21 4 views
2

今月のデータを取得する必要があります。動作するソリューションを見つけることができませんでした。Linq行を選択する現在の月の日付

これは私が必要とするデータを提供します私のコードですが、私は戻って全体の月からデータを取得し、代わりに私たちがしている現在の月から。

私は二回日付「リミット」を選択しましたrow > DateTime.Today.Addmonths(-1)

var userQuery = 
from timeEntry in TimeEntries 
           //this displays a month back, not current month TODO: change to current month. 
where timeEntry.DateEntity > DateTime.Today.AddMonths(-1) 
select new { 
    UserName = timeEntry.User.FirstName + " " +timeEntry.User.LastName, 
    HoursEntered = timeEntry.HoursEntered,  
    User = timeEntry.User 
}; 

var localrows = userQuery.ToList(); 

var grouping = localrows.GroupBy(x => x.User); 

var userList = grouping.Select(q => new { 
    UserName = q.FirstOrDefault().UserName, 
    Hours = q.Sum(hr => hr.HoursEntered),     //AbsenceTypeID = holiday(1)       // still takes from a whole month, instead of current month. 
    Holiday = q.FirstOrDefault().User.Absences.Where(a => a.AbsenceTypeID == 1).Where(date => date.DateEntity > DateTime.Today.AddMonths(-1)).Count(), 
}); 

EDIT:

Keyurパテル」答えがない下のいずれかのかかわらず、働いていました。

ので、そこに私は、このいずれかのジュールを感謝しなければならない:あなたが持っている場合、それは、他の年から数ヶ月と一致しているので.Yearため

DateTime today = DateTime.Today; 
var userQuery = 
from timeEntry in TimeEntries 
where timeEntry.DateEntity.Month == today.Month && timeEntry.DateEntity.Year == today.Year 
select new { 
    UserName = timeEntry.User.FirstName + " " +timeEntry.User.LastName, 
    HoursEntered = timeEntry.HoursEntered,  
    User = timeEntry.User 
}; 

追加チェック:

DateTime.Today.AddDays((DateTime.Today.Day -1) * -1) 
+0

月の最初の日のデータを(編集 - >元から)しますか? – Jules

+0

今月のデータが欲しいので、21/9の場合は1/9から21/9のデータが必要です。 – andrelange91

+1

このDateTime.Today.AddDays((DateTime.Today.Day -1)* -1)を使用してください – Jules

答えて

5

はこれを使用してみてくださいどれか。

休日の一部については

編集

var userList = grouping.Select(q => new { 
    UserName = q.FirstOrDefault().UserName, 
    Hours = q.Sum(hr => hr.HoursEntered), 
    Holiday = q.FirstOrDefault().User.Absences.Where(a => a.AbsenceTypeID == 1 && a.DateEntity.Month == today.Month && a.DateEntity.Year == today.Year).Count(), 
}); 
+0

これは動作しますが、私は休日をチェックしません。 – andrelange91

+1

はい、私は2番目の部分を見逃しました。私の編集したバージョンを試してみてください。 –

+0

はあなたのメソッドとJulesのメソッドを組み合わせるようにしました。あなたの2番目の部分は私のために働いていない、私にエラーを投げつける^^ – andrelange91

1

次のように、DateTimeクラスのMonthYearプロパティを使用することができます。

var userQuery = TimeEntries 
    .Where (te => te.DateEntity.Month == DateTime.Today.Month && te.DateEntity.Year == DateTime.Today.Year) 
    .Select(timeEntry => 
    new { 
     UserName = timeEntry.User.FirstName + " " + timeEntry.User.LastName, 
     HoursEntered = timeEntry.HoursEntered,  
     User = timeEntry.User 
    } 
); 
1

あなたは、単にだけ比較することができますこのような日付の月の部分:

timeEntry.DateEntity.Month == DateTime.Now.Month 
関連する問題