2010-12-10 53 views
1

我用我的LINQ查詢,如下.date屬性沒有在LINQ查詢允許

var result = from m in genDB.Membership_Association 
      join ag in genDB.Account_Group on m.Account_Group_ID equals ag.Account_Group_ID 
      join s in genDB.Account_Section on m.Account_Section_ID equals s.Account_Section_ID 
      join p in genDB.Account_Package on m.Account_Package_ID equals p.Account_Package_ID 
      join pinfo in genDB.ProductInfo on m.Product_ID equals pinfo.Product_Id 
      where m.Control_Plan_ID == controlPlanId && m.Account_ID == accId 
      select new MembershipViewModel 
      { 
       GroupNumber = ag.Account_Group_Number, 
       SectionNumber = s.Account_Section_Number, 
       PackageNumber = p.Account_Package_Number, 
       ProductName = pinfo.Product_Name, 
       CreatedDate = m.Create_Date.Date, 
       EffectiveDate = m.Effective_Date.Value.Date, 
       CancelledDate = m.Cancel_Date.Value.Date, 
       Status = m.Status 
      }; 

在上面的查詢,它拋出一個異常「指定類型的成員‘日期’在LINQ不支持到實體。只支持初始化器,實體成員和實體導航屬性。「在.Date屬性

+5

是。這是不允許的。 (這是什麼問題?) – 2010-12-10 20:51:52

+0

謝謝大衛。是否有任何其他方式我可以得到日期 – sunny 2010-12-10 20:55:34

+0

我只需要獲取指定日期時間字段的日期,我需要得到它在linq查詢 – sunny 2010-12-10 20:59:17

回答

1

您需要確保您只比較日期部分兩側。

測試用例:

  1. 如果您在使用萊夫特賽德DateTime類型的rightside也應在DateTime類型而不是Date類型。
  2. 同時檢查你是否使用任何一方作爲可爲空值。
  3. 如果是DateTime類型,則需要檢查雙方的時間值。 例如,創建一個沒有時間的日期時間並檢查: - DateTime myDate = new DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day); var e =(來自myEntities.Table中的mds,其中mds.CreateDateTime> = myDate select mds).FirstOrDefault();

4.如果是日期類型,請使用日期類型進行檢查。例如,

var query = from e in db.MyTable where e.AsOfDate < = DateTime.Now.Date select e;

如果您嘗試過,至少您可以靠近解決方案。

最可能的是,你可能在你的代碼,這樣做:

CreatedDate.Date = m.Create_Date.Date