Atur tipe kolom secara dinamis di LINQ

Saya ingin mengatur nama kolom output dari LINQ secara dinamis. Seperti:

summary Rows.Field<Type>("Name")

Saya perlu melakukan ini karena saya harus mengurutkan tiga kolom berdasarkan kondisi a dan setiap kolom memiliki 2 tipe berbeda seperti float, int dan double

Adakah yang punya saran tentang bagaimana hal ini bisa dilakukan?


person Shivi    schedule 13.06.2011    source sumber
comment
Tidak terlalu yakin dengan kode Anda, tapi Anda bisa menggunakan opsi Select(new{}). Anda juga dapat menggunakan LINQPad untuk bereksperimen.   -  person John    schedule 13.06.2011
comment
Apa maksudnya each column has 2 different types like ... (3 types here)?   -  person Snowbear    schedule 13.06.2011


Jawaban (1)


LINQ ke SQL berhubungan dengan tipe statis, meskipun ada beberapa trik yang dapat Anda lakukan. Anda tidak dapat mengubah jenis bidang dengan cepat, selain menggunakan Convert.ToInt32, dll. untuk mengubah jenis yang sesuai dengan nilai yang Anda perlukan pada saat Anda ingin mentransmisikannya.

Alternatifnya, Anda dapat mencoba memberikan nilai ke masing-masing dari tiga tipe dari kueri:

from c in ctx
select new
{
    IntVal = c.Value,
    DoubleVal = Convert.ToDouble(c.Value),
    .
    .
}

Dengan cara ini, Anda akan mendapatkan ketiga pemain tersebut dengan tepat dan dapat memanfaatkan bidang yang benar. Saat bekerja dengan rekaman, Anda bahkan dapat menggunakan pembungkus refleksi untuk mendapatkan sesuatu yang serupa dengan yang Anda inginkan. Saya tidak tahu apakah Convert didukung LINQ, tetapi Anda seharusnya dapat melakukan hal serupa.

HTH.

person Brian Mains    schedule 14.06.2011