gpt4 book ai didi

c# - 如何使用 LINQ 比较日期和日期时间?

转载 作者:太空宇宙 更新时间:2023-11-03 21:27:54 25 4
gpt4 key购买 nike

我正在尝试用两个列表为数据库做种。第一个列表只是一堆项目。第二个列表是一堆引用第一个列表的垃圾。我正在尝试通过 LINQ 在第二个垃圾列表中引用第一个列表中的项目,但我相当确定我没有做对:

例如 list 1:

var items = new List<Item>()
{
new Item { ItemtId = 1, DateTime = new DateTime(2014, 09, 05, 12, 30, 30), Text = "Cheese" },
new Item { ItemtId = 1, DateTime = new DateTime(2014, 09, 05, 12, 30, 30), Text = "Lettuce" },
new Item { ItemtId = 1, DateTime = new DateTime(2014, 09, 05, 12, 30, 30), Text = "Ground Beef" },
new Item { ItemtId = 1, DateTime = new DateTime(2014, 09, 03, 12, 30, 30), Text = "Ketchup" },
new Item { ItemtId = 1, DateTime = new DateTime(2014, 09, 03, 12, 30, 30), Text = "Mustard" },
};

var junk= new List<Junk>()
{
new Junk { JunkId = 1, DateTime = new DateTime(2014, 09, 05, 10, 00, 00), Items = items.Where(d => d.DateTime.ToShortDateString() == new DateTime(2014, 09, 05).ToShortDateString()},
new Junk { JunkId = 2, DateTime = new DateTime(2014, 09, 03, 11, 00, 00), Items = items.Where(d => d.DateTime.ToShortDateString() == new DateTime(2014, 09, 03).ToShortDateString()}
};

这似乎应该是我的答案,因为我只对日期而不是时间感兴趣,但它不会像这样播种。我收到错误:

LINQ to Entities does not recognize the method 'System.String ToShortDateString()' method, and this method cannot be translated into a store expression.

关于如何构建更好的解决方案有什么想法吗?

更新

看来我没有将我的代码准确地转录到站点,最终发现了我的问题。

在我的原始代码中,我有:

new Junk { JunkId = 1, DateTime = new DateTime(2014, 09, 05, 10, 00, 00), Items = context.Items.Where(d => d.DateTime.Date == new DateTime(2014, 09, 05) }

当我应该拥有

new Junk { JunkId = 1, DateTime = new DateTime(2014, 09, 05, 10, 00, 00), Items = items.Where(d => d.DateTime.Date == new DateTime(2014, 09, 05) }

我一直在不必要地调情 .ToShortDateString()

最佳答案

将过滤器更改为:

.Where(d => d.DateTime.Date == new DateTime(2014, 09, 05))

关于c# - 如何使用 LINQ 比较日期和日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25860183/

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