2013-06-01 231 views
0

我从Sale表中查询了以下查询并希望通过短日期对其进行过滤。将linq日期转换为短日期

Dim query = From c In db.Sale Where c.TRAN_DATE=TranDateParam 
      Group By c.TRAN_DATE Into Total_Payment = Sum(c.PAYMENT),Discount_Amount = Sum(c.DISCOUNT) _ 
      Select Total_Payment, Discount_Amount, TRAN_DATE 

-My c.TRAN_DATE值被包括time.Example: “2013年5月1日10:09:49.107”
-My TranDateParam值是短日期format.Example:“2013年5月1日“

因此我无法比较c.TRAN_DATE = TranDateParam。我尝试了很多方法隐藏c.TRAN_DATE来缩短日期但不成功。

我试试下面的方法,但失败:

c.Tran_Date.ToString("dd-MM-yyyy") 
c.Tran_Date.Value.ToShortDateString() 
CDATE(c.Tran_Date) 

如何我解决这个问题?谢谢

+0

你有没有得到任何错误与你尝试的方法?如何'c.TRAN_DATE.ToShortDateString()'(注意C#区分大小写)。 – Tim

+0

我尝试c.Tran_Date.Value.ToShortDateString()。错误消息是:“LINQ to Entities不能识别方法'System.String ToShortDateString()'方法,并且此方法不能转换为存储表达式。” –

+0

'TranDateParam'的数据类型是什么? – ajakblackgoat

回答

0

问题已修复。我只是改变我的查询如下:

Dim query = From c In db.Sale Where c.TRAN_DATE= CDate(TranDateParam) _ 
      Group By c.TRAN_DATE Into Total_Payment = Sum(c.PAYMENT),Discount_Amount = Sum(c.DISCOUNT) _ 
      Select Total_Payment, Discount_Amount, TRAN_DATE