如何比较日期并使用LINQ中的c#获取日期计数

时间:2011-04-02 06:27:11

标签: linq

我想比较当前日期给出的日期,我希望通过使用linq得到天数

感谢, Vara Prasad.M

2 个答案:

答案 0 :(得分:2)

我认为没有必要使用Linq。

DateTime givenDate; // given by earlier code
DateTime currentDate = DateTime.Now;

TimeSpan timeSpan = givenDate.Subtract(currentDate);

int timeSpanInDays = timeSpan.Days;

答案 1 :(得分:1)

我假设您正在循环包含日期的内容。我使用了DataTableDataRow 我完全不了解你的情况,所以根据你的需要调整它。

我创建了这个foreach循环

DateTime currentDate = DateTime.Now;
foreach (System.Data.DataRow row in new System.Data.DataTable().Rows)
{
    DateTime givenDate = DateTime.Parse(row[0].ToString());
    TimeSpan timeSpan = givenDate.Subtract(currentDate);

    if (timeSpan.Days > 10)
    {
        Foo(timeSpan.Days);
    }

}

使用Resharper的强大功能,它已被转换为

DateTime currentDate = DateTime.Now;
foreach (TimeSpan timeSpan in
    new System.Data.DataTable().Rows.Cast<DataRow>()
    .Select(row => DateTime.Parse(row[0].ToString()))
    .Select(givenDate => givenDate.Subtract(currentDate))
    .Where(timeSpan => timeSpan.Days > 10))
{
    Foo(timeSpan.Days);
}

显然,这可能需要根据您的需要进行调整。我不确定你需要什么日子,所以我在这些日子里加了一个if。如果您只是将值传递给某个地方,或者使用该值,LINQ查询将丢弃.Where(...)

我希望这会有所帮助。我不清楚你需要什么LINQ ...但是有一些LINQ。 :)

(除了喜欢这个工具之外,我与JetBrains或Resharper没有联系。)