2010-12-10 23 views
1

J'utilise ma requête LINQ comme ci-dessouspropriété .date n'est pas autorisée dans LINQ requête

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 
      }; 

Dans la requête ci-dessus, il est de lancer une exception « Le membre de type spécifié « Date » est pas pris en charge LINQ aux entités: seuls les initialiseurs, les membres d'entité et les propriétés de navigation d'entité sont pris en charge. " at .Date prperty

+5

Yup. Ce n'est pas autorisé. (Quelle est la question?) –

+0

Merci David. Existe-t-il un autre moyen que je peux obtenir la Date – sunny

+0

Je dois obtenir seulement la Date pour les champs DateTime spécifiés et je dois l'obtenir dans la requête linq – sunny

Répondre

1

Vous devez vous assurer que vous comparez seulement la partie Date des deux côtés.

cas de test:

  1. Si vous utilisez le type DateTime dans le Leftside rightside devraient également être dans le type DateTime mais pas du type de date.
  2. Vérifiez également si vous avez utilisé un côté comme valeur NULL.
  3. S'il s'agit du type DateTime, vous devez vérifier les valeurs de temps des deux côtés. Par exemple, créez une date/heure sans heure et vérifiez: - DateTime myDate = new DateTime (DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); var e = (à partir de mds dans myEntities.Table où mds.CreateDateTime> = myDate sélectionnez mds) .FirstOrDefault();

4.S'il s'agit du type de date, vérifiez-le avec le type de date. Par exemple,

var query = à partir de e dans db.MyTable où e.AsOfDate < = DateTime.Now.Date select e;

Au moins, vous serez en mesure d'aller près de la solution si vous l'avez essayé.

Très probablement, vous pourriez avoir à faire comme ceci dans votre code:

CreatedDate.Date = m.Create_Date.Date