J'utilise une instruction LINQ qui sélectionne dans diverses tables des informations dont j'ai besoin pour remplir des enregistrements de type Post / Post Comment. J'obtiens une drôle d'exception disant que l'objet doit implémenter IConvertible lorsque j'essaie d'itérer l'ensemble des enregistrements. Ce qui est amusant, c'est que cela ne semble se produire que lorsque le type anonyme que j'utilise pour contenir les données contient plus de 2 collections génériques.
//select friend timeline posts posts
var pquery = from friend in fquery
join post in db.game_timeline on friend.id equals post.user_id
//join user in db.users on post.friend_id equals user.id into userGroup
//join game in db.games on post.game_id equals game.game_id into gameGroup
select new
{
Friend = friend,
Post = post,
Game = from game in db.games
where game.game_id == post.game_id
select game,
Recipient = from user in db.users
where user.id == post.user_id
select user,
Comments = from comment in db.timeline_comments
where comment.post_id == post.id
join users in db.users on comment.user_id equals users.id
select new { User = users, Comment = comment }
};
(Note : J'utilise MYSQL Connector/Net donc des choses comme Take et FirstOrDefault et des choses comme ça ne sont pas supportées dans les déclarations LINQ elles-mêmes, j'ai choisi d'utiliser ces méthodes pendant l'itération car cela ne soulève pas d'exception à cet endroit)
Le problème est que, lorsque les 3 champs (Jeu, Destinataire, et Commentaires) sont présents. J'obtiens l'exception "Object must implement IConvertible". MAIS si je supprime N'IMPORTE lequel des 3 champs (peu importe lequel), cela fonctionne très bien. Quelqu'un sait-il ce qui se passe ici ?
Merci d'avance !
Ryan.