web-dev-qa-db-fra.com

Requête LINQ pour convertir une chaîne en date/heure

Je veux convertir la valeur de chaîne en heure de la date 

Classe

public class demoDate
{
    public DateTime DueDate;
    public int OrderReportID;

    public DateTime _DueDate 
    { 
        get { return DueDate; } 
        set { DueDate = value; } 
    }

    public int _OrderReportID 
    { 
        get { return OrderReportID; } 
        set { OrderReportID = value;} 
    }
}

Requête  

var DateQuery = (from o in db.Order_Reports
                 select new demoDate {
                    DueDate = System.DateTime.Parse(o.ReportDueDateTime), 
                    OrderReportID = o.OrderReportID
                 }).ToList();

Ce code montre l'erreur suivante 

LINQ to Entities ne reconnaît pas la méthode "System.DateTime Parse (System.String)" et cette méthode ne peut pas être traduite en une expression de magasin.

8
Golda

Vous devez d’abord matérialiser la requête (c’est-à-dire charger les données) dans votre application, puis l’analyser. Entity Framework ne sait pas exécuter les méthodes .Net (comme DateTime.Parse), il sait seulement les traduire en SQL

var DateQuery = db.Order_Reports.ToList().Select(o => new demoDate 
{
    DueDate=DateTime.Parse(o.ReportDueDateTime),
    OrderReportID= o.OrderReportID
});
5
i3arnon

Si vous avez besoin de le convertir avec SQL, vous pouvez essayer d’utiliser SqlFunctions.DateAdd et d’ajouter un intervalle nul.

var DateQuery = db.Order_Reports.Select(o => new demoDate {
    DueDate = SqlFunctions.DateAdd("day", 0, o.ReportDueDateTime), 
    OrderReportID = o.OrderReportID
 });
14
Volodymyr Baydalka
DateTime myDateTime = Convert.ToDateTime(DateTimePicker.Text);

var kayitVarmi = (from myfTable in db.tbl_myfTable 
                              .
                              .
                              .
                              .                      
                              where
                                tbl_donemAyYil.donemAyYilKu == myDateTime 
0
Halil