Ho una colonna DateTime
nella mia tabella.Come ottenere il nome del mese dalla colonna datetime in Linq a SQL?
In LINQ to SQL query, ho solo bisogno Mese parte di quel campo
Come scrivere query LINQ per questo?
Ho una colonna DateTime
nella mia tabella.Come ottenere il nome del mese dalla colonna datetime in Linq a SQL?
In LINQ to SQL query, ho solo bisogno Mese parte di quel campo
Come scrivere query LINQ per questo?
Qualcosa di simile:
string monthName = dataContext.GetTable<TableName>()
.FirstOrDefault(t => t.DateTimeColumn)
.ToString("MMM");
Beh, ci sono tre opzioni che posso immediatamente pensare:
DateTime
indietro, e quindi estrarre il mese e formattarla lato clientDateTime.Month
per estrarre solo il mese dal database, quindi formattarlo lato clientPersonalmente vorrei non provare la terza opzione - ci si sente a me come è molto improbabile che funzioni, almeno senza un grande sforzo.
ho il sospetto che avevo realtà basta tirare la DateTime
indietro, e fare tutto ciò lato client. È molto facile farlo ed è destinato a funzionare. Prevedo che DateTime.Month
sarà probabilmente lavoro, ma non si sta risparmiando molto molta larghezza di banda della rete, e si otterrà il server per fare il lavoro che è probabilmente altrettanto facile per il client da fare.
Si noti che se si desidera ancora i risultati come query, è possibile utilizzare AsEnumerable
per forzare il resto della query da eseguire lato client. Per esempio:
var query = db.Customers
.Where(c => c.OrderCount > 500) // Or whatever query you want
.Select(c => new { c.Name, c.FirstOrder })
.AsEnumerable() // Do the rest of the query on the client
.Select(c => new { c.Name, c.Month = c.FirstOrder.ToString("MMM") });
EDIT: Come notato nei commenti, ha senso utilizzare DateTime.Month
sul lato server se sarà effettivamente influenzare i risultati , per esempio
var query = db.Customers.Where(c => c.FirstOrder.Month == 1)
...
... ma in quei casi mi aspetto che sia il valore numerico che è importante, non il nome del mese.
La seconda opzione è buona se si desidera filtrare per mese, ma nella selezione la prima opzione va bene per +1 – rfcdejong
@rfcdejong: Sì, buon punto - verrà modificato. –