Pertanyaan Aneh LINQ Untuk Entitas Pengecualian


Saya menggunakan pernyataan LINQ yang memilih dari berbagai informasi tabel yang saya perlukan untuk mengisi beberapa catatan gaya Post / Post Komentar. Saya mendapatkan pengecualian lucu mengatakan bahwa objek harus mengimplementasikan IConvertible ketika saya mencoba untuk mengulangi kumpulan catatan. Bagian yang lucu tentang itu adalah bahwa itu tampaknya hanya terjadi ketika jenis anonim saya gunakan untuk menyimpan data berisi lebih dari 2 koleksi generik.

//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 }
    };

(Catatan: Saya menggunakan MYSQL Connector / Net sehingga hal-hal seperti Ambil dan FirstOrDefault dan hal-hal seperti itu tidak didukung dalam pernyataan LINQ sendiri, saya memilih untuk menggunakan metode tersebut selama iterasi karena tidak meningkatkan pengecualian di sana)

Masalahnya adalah, ketika semua 3 bidang (Game, Penerima, dan Komentar) hadir. Saya mendapatkan pengecualian "Objek harus mengimplementasikan IConvertible". TAPI jika saya menghapus SETIAP salah satu dari 3 bidang tugas (tidak masalah yang mana), itu bekerja dengan baik. Ada yang tahu apa yang terjadi di sini?

Terima kasih sebelumnya!

Ryan.


32
2018-05-05 20:10


asal


Jawaban:


Ini tebakan, tapi aku berpikir tipe anonim Anda mungkin mencoba untuk jenis bebek ke enum ketika Anda memiliki lebih dari dua pertanyaan. Jika itu terjadi, maka Anda akan mendapatkan keluhan ini tentang tidak mengimplementasikan IConvertible, karena enum menerapkan IConvertible, dan jenis anonim Anda (sekarang diturunkan dari enum) tidak mengimplementasikan antarmuka.


1
2018-05-12 18:38