Я использую оператор LINQ, который выбирает из различных таблиц информацию, необходимую для заполнения некоторых записей в стиле пост / пост комментарий. Я получаю забавное исключение, говорящее, что объект должен реализовывать IConvertible, когда я пытаюсь выполнить итерацию набора записей. Самое смешное в том, что это происходит только тогда, когда анонимный тип, который я использую для хранения данных, содержит более 2 общих коллекций.
//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 }
};
(Примечание: я использую MYSQL Connector / Net, поэтому такие вещи, как Take и FirstOrDefault и тому подобное, не поддерживаются в самих операторах LINQ, я решил использовать эти методы во время итерации, поскольку там не возникает исключение)
Проблема в том, что присутствуют все 3 поля (Игра, Получатель и Комментарии). Я получаю исключение «Объект должен реализовывать IConvertible». НО, если я удаляю ЛЮБОЕ одно из 3 полевых назначений (неважно, какое), оно работает просто отлично. Кто-нибудь знает, что здесь происходит?
Заранее спасибо!
Райан.