Walaupun data dalam .net mudah digunakan dan popular, melaksanakan pertanyaan Linq di atasnya mungkin menghadapi cabaran yang tidak dijangka. Artikel ini akan meneroka sekatan ini dan menyediakan garis panduan beransur -ansur untuk membantu anda berjaya menggunakan LINQ untuk menanyakan datatables.
Sebab kegagalan pertanyaan linq pada datatables secara langsung
Berbeza dengan yang dijangkakan, pertanyaan LINQ tidak dibenarkan terus ke koleksi baris DataTable. Ini kerana datarowcollection tidak melaksanakan antara muka iEnumerable . Oleh itu, kod berikut akan gagal:
<code class="language-csharp">var results = from myRow in myDataTable where results.Field("RowNo") == 1 select results;</code>
Untuk menyelesaikan masalah ini, anda perlu menggunakan kaedah lanjutan () yang disediakan dalam ruang nama yang disediakan dalam ruang nama System.Data.DataSetExsions. Kaedah pengembangan ini menukarkan DataTable kepada ienumeration untuk membolehkan linq untuk pertanyaan.
skema alternatif ekspresi lambda
<code class="language-csharp">var results = from myRow in myDataTable.AsEnumerable() where myRow.Field<int>("RowNo") == 1 select myRow;</code>
Tukar hasil kepada DataTable (Pilihan)
Jika anda perlukan, anda boleh menggunakan kaedah pengembangan copyToDataTable () untuk menukar ienumeration
<code class="language-csharp">var result = myDataTable .AsEnumerable() .Where(myRow => myRow.Field<int>("RowNo") == 1);</code>
Langkah berjaga -jaga lain
<code class="language-csharp">var dataTableResult = result.CopyToDataTable();</code>
Dengan mengikuti garis panduan ini, anda boleh melakukan pertanyaan LINQ secara berkesan pada datatables untuk melepaskan ciri -ciri kuat LINQ dalam operasi data dan tugas analisis.
Atas ialah kandungan terperinci Bagaimanakah saya dapat menanyakan data yang berkesan menggunakan linq dalam .net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!