gpt4 book ai didi

c# - DateTime 与 LINQ 中格式的比较

转载 作者:太空宇宙 更新时间:2023-11-03 19:53:20 28 4
gpt4 key购买 nike

我正在尝试编写一个简单的 LINQ 查询,其中比较 DateTime 以获得结果。我的要求是 DateTime 必须只比较到毫秒,因此我必须应用格式化程序。查询如下

var availableValues = from value in AvailableValues
where DateTime.Compare(DateTime.ParseExact(value.Time.ToString("dd/MM/yyyy HH:mm:ss.fff"), "dd/MM/yyyy HH:mm:ss.fff", System.Globalization.CultureInfo.CurrentCulture),
DateTime.ParseExact(currentTime.ToString("dd/MM/yyyy HH:mm:ss.fff"), "dd/MM/yyyy HH:mm:ss.fff", System.Globalization.CultureInfo.CurrentCulture)) == 0
select value;

AvailableValues 是一个巨大的集合,上面的查询导致性能下降。

如果有人能建议我更好的方法来达到预期的结果,那将有很大的帮助。

最佳答案

  1. 缓存 currentTime 的值以避免每次比较都重新计算它

  2. 据我了解,您只想比较包括整个 毫秒(没有分数,没有刻度)。因此,您可以创建新的 DateTime 值,仅包含整毫秒(如果您的查询提供程序允许):

    DateTime current = new DateTime(
    currentTime.Year, currentTime.Month, currentTime.Day,
    currenTime.Hour, currentTime.Minute, currentTime.Second, currentTime.Kind).
    AddMilliseconds(currentTime.Millisecond);

    var availableValues = from value in AvailableValues
    where currentTime == new DateTime(
    value.Time.Year, value.Time.Month, value.Time.Day,
    value.Time.Hour, value.Time.Minute, value.Time.Second, value.Time.Kind).
    AddMilliseconds(value.Time.Millisecond)
    select value;

这比将您的 DateTime 转换为 string 然后再转换回来要快得多。

关于c# - DateTime 与 LINQ 中格式的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36197740/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com