2015-08-12 36 views
5

Olaylarım var, her olayın iki tarihi vardır; başlangıç ​​tarihi ve bitiş tarihi. Aylara göre filtre oluşturmak istiyorum. Bir kullanıcının seçtiği bir ay arasında değişen tarihleri ​​nasıl iade ederim? Örneğin, kullanıcının ay ayı seçtiğini söyleyebildiğim, bu ay içindeki tüm olayları iade etmek istiyorum.Verileri aylara göre filtrelenmiş iki tarih değerine göre filtrele

Bunu, günümüzün tarihleri ​​arasında değişen tarihleri ​​almak için kullandım, ancak şimdi bir ay aralığını nasıl alacağınız konusunda takıldım.

DateTime dateToCheck = DateTime.Today.Date; 
DateTime startDate = DateTime.Parse(item["Start Time"].ToString()); 
DateTime endDate = DateTime.Parse(item["End Time"].ToString()); 
foreach (SPListItem item in collection) 
{ 
    if (startDate <= dateToCheck && dateToCheck < endDate) 
    { 
     ListBox1.Items.Add(item["EventTitle"].ToString()); 
    } 
} 
+1

Lütfen başka bir şey denediniz mi? Soruyu yalnızca Metin'den formüle etmek zor. – Joseph

cevap

3
// set up dummy data 
var dates = new[] {DateTime.Now, DateTime.Now, DateTime.Now}; 
int month = GetMonth(); 
// get result 
var result = dates.Where(date => date.Month == month); 

DÜZENLEME: Eğer Tabii

var dates = new[] {DateTime.Now, DateTime.Now, DateTime.Now}; 
int year = GetYear(); 
int month = GetMonth(); 
var result = dates.Where(date => date.Year == year && date.Month == month); 

kullanmak, tarihler yanı doğru yılı olduğundan emin olmak gerekiyorsa, yıl/ay sayılarını öğrenmek yanı sıra edebilirsiniz Nereden olursa olsun tarih listesi.

EDIT2:

var dates = new[] {DateTime.Now, DateTime.Now, DateTime.Now}; 
var input = GetDateTime(); 
var result = dates.Where(date => date.Year == input.Year && date.Month == input.Month); 
0

Hala küçük değişiklikler yaparak kod kullanabilirsiniz: girdi buna göre değiştirmek gibi bir DateTime nesnesi alırsanız. Başlangıç ​​tarihinden itibaren, ayın 1'inci 00:00 saatini seçmeniz ve bitiş tarihi olarak, bir sonraki ayın 1'inci 00:00 saatini kullanmanız gerekmektedir. Ekim 2015'in durumunda: 1 Oct 2015 <= date < 1 Nov 2015.

int year = 2015; 
int month = 10; 
DateTime dateToCheck = DateTime.Today.Date; 
DateTime startDate = new DateTime(year, month, 1); 
DateTime endDate = startDate.AddMonths(1); 
foreach (SPListItem item in collection) 
{ 
    if (startDate <= dateToCheck && dateToCheck < endDate) 
    { 
     ListBox1.Items.Add(item["EventTitle"].ToString()); 
    } 
} 
İlgili konular