2013-09-26 25 views
5

DateTime numaralı telefondan yalnızca Date sonucunu seçmem gereken bir Linq sonucum var.
Benim Sorgu şöyledir:Linq - Tarih seçin DateTime

var UserTemplates = (from xx in VDC.SURVEY_TEMPLATE 
        where xx.USER_ID == userid && xx.IS_ACTIVE == 1 
        select new 
        { 
         xx.TEMPLATE_ID, 
         xx.TEMPLATE_NAME, 
         //CREATED_DATE = xx.CREATED_DATE.Value.Date 
         //CREATED_DATE = EntityFunctions.TruncateTime(xx.CREATED_DATE) 
         xx.CREATED_DATE 
        }).ToList(); 

o Mümkün mü? Herhangi bir yardım büyük takdir edilecektir.

CREATED_DATE - `datetime` datatype 

Aslında bir DataSource olarak Kontrole bunu Bağlama ediyorum ve kontrol sadece date görüntülemek istediğiniz her ikisi Date and Time .ama görüntülüyor. Belki

The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

+1

Ve problem nedir? – I4V

+0

xx.CREATED_DATE.ToShortDateString()? CREATED_DATE hangi biçimdir? – andrewb

cevap

15

, o zaman DataFormatString özelliğini kullanabilirsiniz. Örneğin, bir GridView'a bir veri kaynağını bağlıyorsanız;

<asp:BoundField DataField="CREATED_DATE" ... 
    DataFormatString="{0:d}" ../> 

Else Zaman kısmı olmadan giriş tarihini döndürür EntityFunctions.TruncateTime() kullanabilirsiniz.

EntityFunctions.TruncateTime(xx.CREATED_DATE) 

Sorunuz şöyle;

var UserTemplates = (from xx in VDC.SURVEY_TEMPLATE 
        where xx.USER_ID == userid && xx.IS_ACTIVE == 1 
        select new 
        { 
         xx.TEMPLATE_ID, 
         xx.TEMPLATE_NAME, 
         EntityFunctions.TruncateTime(xx.CREATED_DATE) //new like 
        }).ToList(); 
+0

+1. – Aron

+5

Entity Framework'ün daha yeni sürümlerinde 'EntityFunctions', 'DbFunctions' ile değiştirildi. –

-1

bu: Ben CREATED_DATE = xx.CREATED_DATE.Value.Date ile çalışıyorum zaman

, O gibi bir hata veriyor? o sunum amaçlı ise

var qry = (from xx in VDC.SURVEY_TEMPLATE 
      where xx.USER_ID == userid && xx.IS_ACTIVE == 1 
      select new { xx.TEMPLATE_ID, xx.TEMPLATE_NAME, xx.xx.CREATED_DATE }); 

var UserTemplates = qry.AsEnumerable().Select(xx => new 
        { 
         xx.TEMPLATE_ID, 
         xx.TEMPLATE_NAME, 
         xx.CREATED_DATE.Value.Date 
        }).ToList(); 
+0

'.Date' gibi bir özelliği yok. Yalnızca '.Value.Date' gibi bir özelliği vardır ve bu çalışmıyor ve aşağıdaki gibi bir hata veriyor: Belirtilen tür üye 'Tarih', LINQ'dan Varlıklar'a desteklenmiyor. Yalnızca başlatıcılar, varlık üyeleri ve varlık gezinme özellikleri desteklenir. – RealSteel

+0

@RealSteel Bu, tamamen takip ederseniz çalışmalıdır. Nedeni, ".Date" çağrısının, Linq to Entities yerine Linq to Object'te çalışmasıdır. Hala. Bu benim tercih ettiğim çözüm değil. – Aron

+1

@Aron Ayrıca tercih ettiğim çözüm de değil. Değer gösterim amacıyla elde edilirse, sorgudan hiç bir tarih almamayı bile umursamıyorum. Kontrol, gösterim değeri için bir FormatString olmalıdır. – Dbuggy

0
var UserTemplates = (from xx in VDC.SURVEY_TEMPLATE 
        where xx.USER_ID == userid && xx.IS_ACTIVE == 1 select xx).AsEnumerable() 
        .Select(i=> new 
        { 
         i.TEMPLATE_ID, 
         i.TEMPLATE_NAME, 
         CREATED_DATE = i.CREATED_DATE.ToString("M/d/yyyy"), 
         i.CREATED_DATE 
        }).ToList(); 
+0

Bir sorgu gövdesi bir select yan tümce veya bir grup ile bitmelidir – RealSteel

+0

@RealSteel Yanıt Güncellendi – Damith