如何在 LINQ 中使用 C# 比较日期并获取天数

发布于 2024-10-29 12:42:20 字数 62 浏览 1 评论 0原文

我想将给定的日期与当前日期进行比较,并且我想使用 linq 获取天数,

谢谢, 瓦拉·普拉萨德

i want to compare the date given with the current date and i want to get the number of days by using linq

thanks,
Vara Prasad.M

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

染柒℉ 2024-11-05 12:42:20

我认为没有必要为此使用 Linq。

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

TimeSpan timeSpan = givenDate.Subtract(currentDate);

int timeSpanInDays = timeSpan.Days;

I don't see the need to use Linq for this.

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

TimeSpan timeSpan = givenDate.Subtract(currentDate);

int timeSpanInDays = timeSpan.Days;
总攻大人 2024-11-05 12:42:20

我假设您正在循环遍历包含日期的内容。我使用了 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 没有任何关系。)

I'm making the assumption that you are looping through something which contains the date. I've used a DataTable and DataRow.
I don't know your case exactly, so adjust this as needed for what you are doing.

I created this foreach loop

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);
    }

}

Using the awesome power of Resharper, it has been transformed into

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);
}

Obviously this may need to be tweaked based your needs. I wasn't sure what you needed the days for, so I included an if on the days. Were you to just pass the value somewhere, or use the value, the LINQ query would drop the .Where(...).

I hope this helps. I'm not clear on what you need LINQ for... But there's some LINQ. :)

(I have no association with JetBrains or Resharper other than loving the tool.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文