使用LINQ从列中获取个别日期的最佳方法

时间:2011-08-05 15:07:16

标签: linq c#-4.0

我在一个MSSQL表列中有以下数据

2011-06-20 11:53:32.000
2011-06-20 11:54:24.000
2011-06-20 11:55:45.000
2011-08-05 10:24:12.000
2011-08-05 10:25:28.000
2011-08-05 10:26:20.000
2011-08-05 10:27:12.000
2011-08-05 10:28:04.000
2011-08-05 10:28:55.000

使用LINQ,我想从列

中获取以下数据
2011-06-20 
2011-08-05

所以我可以放入List<>

最好的方法是什么?我已经有了上下文设置,所以我不需要详细说明。我只需要了解最好的“查询”和逻辑,我可以使用它来获取这些数据。谢谢!

3 个答案:

答案 0 :(得分:1)

您正在寻找一系列DateTimes中的所有Distinct日期,以下将显示示例以获取您需要的内容,假设您已经在字符串中或通过查询数据库:

示例(包含字符串列表)

var list; //Contains your dates
var result = list.Select(x => x.Date.ToShortDateString()).Distinct();

示例(来自数据库表)

List<String> dates = (FROM d in datesTable
                      SELECT d.date.ToShortDateString()).Distinct().ToList();

用于演示功能的控制台示例:

List<DateTime> list = new List<DateTime>();
list.Add(DateTime.Parse("2011-06-20 11:53:32.000"));
list.Add(DateTime.Parse("2011-05-20 11:53:32.000"));
list.Add(DateTime.Parse("2011-05-20 11:44:32.000"));
list.Add(DateTime.Parse("2011-04-20 11:53:32.000"));

var result = list.Select(x => x.Date.ToShortDateString()).Distinct();

foreach (string date in result)
{
    Console.WriteLine(date);
}
Console.Read();

答案 1 :(得分:0)

var q = from t in mydates select distinct ( t.Date.ToShortDateString());

答案 2 :(得分:0)

要在列表中选择不同的日期,请尝试:

List<String> myDates = (from t in myTable
                        select t.myDate.ToShortDateString()
                       ).Distinct().ToList()