Свойство .date не разрешено в запросе linq - PullRequest
1 голос
/ 10 декабря 2010

Я использую мой запрос 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 to Entities. Поддерживаются только инициализаторы, элементы сущностей и свойства навигации сущностей». в .Date prperty

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Вы можете использовать SqlFunctions.DatePart для извлечения соответствующих частей DateTime, которые вы хотите сравнить.Смотри http://msdn.microsoft.com/en-us/library/system.data.objects.sqlclient.sqlfunctions.datepart.aspx

1 голос
/ 30 декабря 2011

Вам необходимо убедиться, что вы сравниваете только часть даты с обеих сторон.

Контрольные примеры:

  1. Если вы используете тип DateTime в левой стороне, правая сторона также должна быть в типе DateTime, но не в типе Date.
  2. Также проверьте, использовали ли вы какую-либо сторону в качестве значения NULL.
  3. Если это тип DateTime, нужно проверить значения времени с обеих сторон. например, создайте дату без времени и проверьте: - DateTime myDate = new DateTime (DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); var e = (из mds в myEntities.Table, где mds.CreateDateTime> = myDate select mds) .FirstOrDefault ();

4. Если это тип даты, проверьте его с типом даты. Например,

var query = от e в db.MyTable, где e.AsOfDate <= DateTime.Now.Date select e; </p>

По крайней мере, вы сможете приблизиться к решению, если попробуете его.

Скорее всего, вам, возможно, придется сделать следующее в своем коде:

CreatedDate.Date = m.Create_Date.Date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...