【发布时间】:2009-07-17 13:28:13
【问题描述】:
我正在使用 LINQ to SQL。我的数据库有 3 列 Ref、Due_amount、Due_Date。 例如,数据可能如下所示。
10 02/08/2009 00:00:00 175.0000
10 02/09/2009 00:00:00 175.0000
10 02/10/2009 00:00:00 175.0000
10 02/11/2009 00:00:00 175.0000
10 02/12/2009 00:00:00 175.0000
10 02/01/2010 00:00:00 175.0000
我下面的代码返回 6 个元素并且可以工作,但是日期总是 02/08/2009?如果我说将第 2 行的金额更改为 150.0000,它会返回正确的日期 02/09/2009? 有什么想法吗?
private static void PopulateInstalments(string Ref, ResponseMessage responseMsg)
{
using (DAO dbContext = new DAO())
{
IEnumerable<profile> instalments = (from instalment in dbContext.profile
where instalment.ref == Ref
select instalment);
foreach (profile instalment in instalments)
{
if (responseMsg.Instalments == null)
responseMsg.Instalments = new ArrayOfInstalments();
Instalment tempInstalment = new Instalment();
tempInstalment.DueAmount = instalment.Due_amount;
tempInstalment.DueDate = instalment.Due_date == null ? "" : instalment.Due_date.ToString();
responseMsg.Instalments.Add(tempInstalment);
}
}
}
谢谢 理查德
【问题讨论】:
-
从您的 LINQ 生成的 SQL 语句是什么?而且,不确定这是否重要,通常对于 LINQ 2 SQL,返回的类型将是 IQueryable 而不是 IEnumerable,也许也尝试更改那个类型?
-
嗨,对不起,它实际上是一个 LINQ to 实体。我试过 IQueryable 但没有快乐。在选择分期后添加断点);它确实返回 6 个元素,但这里的日期相同
-
所以你说选择后立即数据已经不正确?如果是这种情况,那么您提供的代码将无法帮助我们缩小范围。问题似乎与您的数据或您的实体模型有关。有没有更多的背景可以提供给我们?
-
你是在用VS的工具生成实体模型吗?
-
是的,我正在使用 VS 的实用程序来生成实体模型。正如我所说,如果值不同,则返回正确的日期。实体正在访问 SQL 表。表上没有主键,Ref是有索引的,唯一的非唯一的和非聚集的。