2009-07-20 8 views
2

Si j'ai cette requête SQL:C#: LINQ to SQL: exécution requête littérale

"select top distincte 1 'postID' = isnull (RootPost, Id), PostedDateTimeUtc de l'ordre post par PostedDateTimeUtc desc"

Et j'ai besoin d'énumérer les résultats avec un DataContext. C'est-à-dire, comment envoyer ce SQL à un DataContext et analyser le résultat?

Comment faire cela? À quoi ressemblerait une méthode qui renvoie le résultat de manière anonyme?

Répondre

4

pour exécuter des requêtes SQL obtenir des résultats forment une entité connue, vous pouvez utiliser la méthode DataContext.ExecuteQuery: Pour les ensembles de résultats personnalisés,

IEnumerable<Post> = dataContext.ExecuteQuery<Post>(sqlQuery); 

la méthode d'exécution ne peut pas déduire et créer le type anonyme, mais vous avez encore pouvez créer une classe qui contient les champs sélectionnés dans votre requête SQL personnalisée.

class CustomPostResult // custom type for the results 
{ 
    public int? PostId { get; set; } 
    public DateTime PostedDateUtcTime { get; set; } 
} 

//... 

string sqlQuery = @"SELECT DISTINCT TOP 1 'PostId' = ISNULL(RootPost,Id), 
        PostedDateTimeUtc FROM Post ORDER BY PostedDateTimeUtc DESC"; 

IEnumerable<CustomPostResult> = dataContext. 
             ExecuteQuery<CustomPostResult>(sqlQuery); 

Vérifiez cet article:

0

je vide habituellement les résultats dans une liste <> de l'objet LINQ que vous utilisez.

List<Post> posts = new List<Post>(); 

using(your datacontext) 
{ 
    var result = // Your query 
    posts = result.ToList(): 
} 

return posts; 
0

Vous pouvez essayer une expression LINQ. Quelque chose comme ça devrait probablement marcher. Je n'ai pas réellement couru ceci, donc si quelqu'un trouve un problème je réparerai ceci.