2012-07-06 56 views
1

我有一個列表,我想排序並顯示特定日期和時間的條目。如何爲特定日期和時間排序列表

public class Foodlist 
{ 
    public int C_ID { get; set; } 
    public string DateofFood{ get; set;} 
    public string FoodTime{ get; set;} 
    public string FoodDetail{ get; set;} 
} 

當前我正在使用以下代碼以日期降序顯示列表。日期格式與日期選擇器的日期格式相同。

var datetime = foodItems.OrderBy(x => x.DateofFood).ToList();  
listBox1.ItemsSource = datetime; 

我想只顯示特定日期的條目,比如今天。有任何想法嗎?

回答

2

您可以使用.Where來過濾數據:

listBox1.ItemsSource = orderedList; 
var datetime = 
    foodItems 
    .Where(x => DateTime.Parse(x.DateofFood).Date == datePickerValue.Date) //Or whatever the date time is you're after. 
    .OrderBy(x => x.DateofFood) 
    .ToList(); 

這可能是更明智的DateofFood一個DateTime在你的類,但是到(如果需要或ParseExcact())避免使用DateTime.Parse()

.Where(x => x.DateofFood.Date == datePickerValue.Date) //Or whatever the date time is you're after. 

注意使用.Date去除DateTime的時間組件,因此您可以找到一個給定的日期項。

+0

完美的作品:)非常感謝。很好解釋:) – 2012-07-06 09:32:39

+0

你有什麼想法如何比較日期以及時間?這裏的食物日期代表日期值和食物時間作爲食物的時間。 – 2012-07-06 10:06:56

+0

@ShubhamM'.Where(x => DateTime.Parse(x.DateofFood).Date == datePickerValue.Date && DateTime.Parse(x.FoodTime).Time == datePickerValue.Time)'? – DaveShaw 2012-07-06 10:15:15

0

ü需要在像

var datetime = foodItems.Where(x=>x.DateofFood==DateTime.Today).ToList(); 
0
var datetime = foodItems.Where(x => x.DateofFood == DateTime.Now).ToList(); 
1

申請謂語可以使用的DateTime結構的Date性質:

var result = foodItems.OrderBy(x => x.DateofFood) 
         .Where(x=>x.DateofFood.Date == givenDate.Date).ToList(); 
+0

你的答案也能正常工作..非常感謝。 – 2012-07-06 09:38:49

0

如果你把它作爲字符串,那麼它可能是一個更好的選擇將其存儲爲yyyyMMdd。這將爲您提供簡單的排序。

雖然你總是可以做System.DateTime.UtcNow.ToString("yyyyMmMdd")與上面的列表比較。