2012-09-14 68 views
0

我想用VB做一個連接查詢Linq。我想回到最大EnterTime,但我得到一個錯誤,說「在Linq加入查詢中選擇最大日期

不能轉換System.Linq.Iqueryable(日期),以System.Nullable(中 日期)

我怎樣才能解決這個問題?

 Dim results = 
      From b In context.H_Beneficiary 
      Join e In context.Employees On b.EmployeeId Equals (e.EmployeeId) 
      Join c In context.Companies On e.CompanyId Equals (c.CompanyId) _ 
      Where e.IntegrationId.Equals(c.CompanyId) _ 
      And (b.EndDate Is Nothing Or b.EndDate >= DateTime.Today) 
      Select b.EnterTime 

回答

1

您的LINQ查詢返回的日期序列,沒有一個日期。這就是爲什麼分配將無法正常工作。

要從查詢分配最大日期,你可以按日期查詢,比挑的第一個結果,如果有的話:

Dim results = 
     From b In context.H_Beneficiary 
     Join e In context.Employees On b.EmployeeId Equals (e.EmployeeId) 
     Join c In context.Companies On e.CompanyId Equals (c.CompanyId) _ 
     Where e.CompanyIntegrationId.Equals(c.CompanyId) _ 
     And (b.EndDate Is Nothing Or b.EndDate >= DateTime.Today) 
     Order By b.EnterTime Descending 
     Select b.EnterTime 

Dim latestDate As Nullable(Of DateTime) = results.FirstOrDefault() 
+0

當我做dates.Max()我得到這個錯誤:無法創建類型'System.Object'的常量值。只有原始類型或枚舉類型在此上下文中受支持。 –

+0

「只支持原始類型」:我想問題可能是分配給可空類型。我將用另一種策略編輯我的代碼。 –

+0

我修改了我的查詢,並將發佈在 –