1. 程式人生 > >c# DataTable中select 返回新的DataTable(DataTable篩選,排序)

c# DataTable中select 返回新的DataTable(DataTable篩選,排序)

/// 執行DataTable中的查詢返回新的DataTable
        /// </summary>
        /// <param name="dt">源資料DataTable</param>
        /// <param name="condition">查詢條件</param>
        /// <returns></returns>
        private DataTable GetNewDataTable(DataTable dt, string condition,string sortstr)
        {
            DataTable newdt = new DataTable();
            newdt = dt.Clone();
            DataRow[] dr = dt.Select(condition,sortstr);
            for (int i = 0; i < dr.Length; i++)
            {
                newdt.ImportRow((DataRow)dr[i]);
            }
            return newdt;//返回的查詢結果
        }

-----------------------------------------

問題:

30,31都是datatable
OdbcDataAdapter send30 = new OdbcDataAdapter(sql, con);
            DataTable dt30 = new DataTable();
            send30.Fill(dt30);



            DataTable dt31 = new DataTable();
             string a;
             a =dt30.Rows[0][1].ToString();
            dt31 = dt30.Select("發票號= '"+a+"'");
           


            this.dataGridView5.DataSource = dt31.DefaultView;


提示:錯誤 16
無法將型別“System.Data.DataRow[]”隱式轉換為“System.Data.DataTable” E:/ERP/imformation/imformation/sd01.cs 1099 20 information

回答:

DataTable的Select()方法返回的是一個DataRow的陣列,
在你的程式碼中 dt31 = dt30.Select("發票號= '"+a+"'");顯然dt31是Datatable型別,賦值號後面是DataRow陣列。
分析樓主的意思,可能是想要dt30中的發票號為 a的資料,組成一個新的Datatable作為Gridview的資料來源吧?
要是的話可以用下面的程式碼:
string a;
a =dt30.Rows[0][1].ToString();
DataView dataView = dt30.DefaultView;//定義一個DataView為dt30的預設檢視
dataView.RowFilter = "發票號 = '"+a+"'"; //對dataView進行篩選

this.dataGridView5.DataSource = dataView;//篩選後的dataView做資料來源

chufuya:返回的是陣列,陣列的元素是DataRow。你的這句程式碼“dt31.Rows.Add( dt30.Select("發票號= '"+a+"'"));”應該是不會通過編譯的吧?引數不對。

相關推薦

c# DataTableselect 返回DataTable(DataTable篩選排序)

/// 執行DataTable中的查詢返回新的DataTable        /// </summary>        /// <param name="dt">源資料DataTable</param>        /// <p

C# 往Datatable添加行的步驟

tab pla 聲明 ble ++ light fineui val clas 以一個實例說明 //錄入年份綁定 [csharp] view plain string str1=str.Remove(0,i); string st

SQL SERVER 存儲過程SELECT 返回值如何賦值給變量

資料 開心 d+ server 問題 一個表 procedure insert 結果 今天在處理一個問題時,使用到一個存儲過程,是用於更新並獲取最新ID的。在使用過程中,需要獲取到這個ID並賦值給變量,結果用EXEC @ID = 存儲過程的方式獲取失敗了。具體情況如下:

c++11 函式宣告 關鍵字 delete的妙用之一: 搭配巨集NonCopyable(ClassName) 使用

c++11 中函式宣告 新關鍵字 delete的妙用之一: 搭配巨集NonCopyable(ClassName) 使用 編譯器版本: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)  1.  首先先來

c:forEachselect和oprtion設定預設選項

<select name="categoryid" style="height: 35px;width: 200px"> <c

淺談C#語言的各種數據類型與數據類型之間的轉換

優化配置 line com 歸類 浮點 初學者 結構 ali 順序 什麽是數據類型? 數據類型,百度百科是這樣解釋的:數據類型在數據結構中的定義是一個值的集合以及定義在這個值集上的一組操作。這樣的解釋對於一個初學者來說未必太過於深奧。 簡單點說,數據類型就是不同長度的數據的

Python3基礎 str capitalize 返回字符串第一個字母大寫

2.4 6.5 world vat 哲學 源碼 大寫 開源 copy ? python : 3.7.0 OS : Ubuntu 18.04.1 LTS

C語言的六個避坑糖吃了再也不怕長蛀牙

1.在C語言中,不正確的int型別(預設是在16位機器中)的常數是(A)     A.32768     B.0     C.0xAF    

c語言陣列名代表陣列首地址它的值在執行期間可以改變嗎?

陣列名是陣列的首地址,就是陣列中第一個元素的地址,是常量。常量是不能出現在賦值號=左邊作為左值的。樓上的都沒有解釋清楚,說陣列名就是指標是錯誤的,指標是變數,是用來儲存變數地址值的變數,而陣列名是常量。一般情況下宣告一個數組,比如char a[10];之後,陣列名a都是數組的首地址,是一個地址常量。但是在函式

angular---angularJs1.xselect如何遍歷渲染option陣列與物件、索引使用以及動態非同步渲染option項

1、ng-options指令用途: 在表示式中使用陣列或物件來自動生成一個select中的option列表。ng-options與ng-repeat很相似,很多時候可以用ng-repeat來代替ng-options。但是ng-options提供了一些好處,例如

C/C++語言變數作用域:區域性變數全域性變數檔案級變數

C/C++語言中的變數分為全域性變數和區域性變數。這種劃分方式的依據是變數的可見範圍或者叫做作用域。 1 區域性變數 區域性變數指的是定義在{}中的變數,其作用域也在這個範圍內。雖然常見的區域性變數都是定義在函式體內的,也完全可以人為的增加一對大括號來限定變

C語言的常量、變數及其屬性型別、儲存空間

部落格源地址  http://www.codertown.cn/blog/?p=134 常量和變數其實就是C語言裡的值,其他程式語言同樣存在,這個跟數學裡的是一樣的。 1、常量 固定的值,不可改變的值是常量,幾種型別: 在表示式中直接用數值表示;巨集定義當然也是

c++ 11emplace_back替代push_back的相關知識點含右值引用move用法等

C++11引入了右值引用,轉移建構函式,push_back()右值時就會呼叫建構函式和轉移建構函式(原來是呼叫拷貝構造,會為臨時變數申請堆空間,影響程式效率,C++11以後為右值引用呼叫轉移建構函式,不會為臨時變數申請堆空間,而是直接賦值,提高程式效率)。 使用mplace_back替代push_back()

C語言到底是應該用malloc+memset還是用calloc

有一些老的博文裡會推薦別人用malloc+memset來開闢記憶體和初始化,認為calloc效率更低。如果是單純的malloc和calloc的比較,毋庸置疑,calloc肯定是效率更低的,畢竟calloc多做了一步記憶體的初始化。但是malloc+memset和calloc的

htmlselect的option自定義屬性然後js 獲取

1、 <select id="mySelect"  onchange="selectTurnToUrl(this)"  class="form-control" style="height: 24px; line-height: 24px; padding: 0 12p

element-uiselect元件繫結值改變觸發change事件

1.安裝vuecli腳手架 2.終端輸入 cnpm i element-ui -S 安裝element-ui 3.按需引入select元件 在main.js中寫入如下程式碼 /* 匯入第三方庫開始 */ import 'element-ui/

C語言的函式列印乘法口訣表行數和列數可以任意輸入

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> void print_table(int line) { int i = 0;

用 Span 對 C# 程序三大記憶體區域進行統一訪問 太厲害了!

## 一:背景 ### 1. 講故事 前段時間寫了幾篇 C# 漫文,評論留言中有很多朋友多次提到 Span,週末抽空看了下,確實是一個非常

樹結構的節點增刪改操作後排序碼的重新設定

package com.naydog.sort.bysortkey; import java.util.ArrayList; import java.util.List; /** * 目的:樹結構中一個節點下的子節點非自然排序,而是按照排序碼。當發生節點增

c# DataTable select 過濾返回DataTable

        DataRow[] dr = dt.Select(“col='XXXX'”);//條件:就是欄位名='某某'         /// 執行DataTable中的查詢返回新的DataTable         /// </summary>