Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Abonnements

Quizz 9

Pour une fois je ne vais rien vous donner à coder. Juste une question concernant la réponse que je donne pour le Quizz 8 :

static IEnumerable<int> CommonBegining(IEnumerable<IEnumerable<int>> values)

{

    return values.Aggregate((v1, v2) =>

    {

        IEnumerator<int> v2Enumerator = v2.GetEnumerator();

        return v1.TakeWhile(v => v2Enumerator.MoveNext() && v == v2Enumerator.Current);

    });

}

Pourquoi le code que j'ai écrit ne peut pas fonctionner en LINQ To SQL ou LINQ To Entities ?

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Publié jeudi 14 août 2008 13:01 par Matthieu MEZIL

Classé sous : , , ,

Commentaires

# re: Quizz 9 @ jeudi 14 août 2008 14:15

Parce qu'ils ne gèrent pas les curseurs ?

Sacha

# re: Quizz 9 @ jeudi 14 août 2008 14:36

Ok il ne gère pas les curseurs mais ce n'est pas la réponse que j'attendais.

Le code suivant :

return values.Aggregate((v1, v2) =>

{

    int v2Count = v2.Count();

    return v1.TakeWhile((v, index) => v2Count > index && v == v2.ElementAt(index));

});

ne marche pas non plus.

Pourquoi?

Matthieu MEZIL

# re: Quizz 9 @ jeudi 14 août 2008 19:20

Parce qu'en XLINQ/DLINQ, chaque appel à l'énumérateur relance la requête ?

Ou parce que l'aggrégation n'est pas autorisée ?

J'avoue que je ne sais pas trop...

FREMYCOMPANY

# re: Quizz 9 @ vendredi 15 août 2008 14:24

L'identité d'une colonne de base de données se fait par sa valeur, non par un quelconque ordre. Même un TOP ou un ORDER BY ne sont traités qu'à la fin.

Les méthodes liées à l'ordre d'un ensemble (TakeWhile, ElementAt, ...) ne sont donc pas supportées car difficilement traduisible en langage relationnel.

smo

# re: Quizz 9 @ samedi 16 août 2008 11:08

En plus, Aggregate n'est pas supporté par Linq to SQL, et je suppose qu'il ne l'est pas non plus sous EF (c'est franchement pas traduisible de manière générique en SQL)

simon ferquel

# re: Quizz 9 @ lundi 18 août 2008 11:38

Oui tout ceci est vrai mais ce n'est toujours pas le point que je voulais mettre en avant.

Ce que j'attendais comme réponse c'est qu'une lambda expression ne peut être intégrée dans un Expression Tree (obligatoire pour être traduit en LINQ To SQL et LINQ To Entities) que si elle ne contient pas d'opération.

Je m'explique en prenant un exemple très simple :

Ce code compile

Expression<Func<string, char>> getFirstLetter = s => s.First();

mais pas celui-là :

Expression<Func<string, char>> getFirstLetter = s => { return s.First(); };

avec l'erreur :

A lambda expression with a statement body cannot be converted to an expression tree

En VB 9, il n'est pas possible de créer des lambdas expressions qui ne peuvent pas également être des Expressions.

Matthieu MEZIL

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01