Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何制作C数据表过滤器_C#_Datatable - Fatal编程技术网

C# 如何制作C数据表过滤器

C# 如何制作C数据表过滤器,c#,datatable,C#,Datatable,我的数据表 dtData ID | ID2 -------- 1 | 2 1 | 3 dtData.Select("ID = 1"); one more rows; 我想要行ID=1和ID2=3如何制作?你的意思是这样吗?: dtData.Select("ID=1 AND ID2=3"); 好吧,我就是这样做的 GridFieldDAO dao = new GridFieldDAO(); //Load My DataTab

我的数据表

    dtData

    ID | ID2
    --------
    1  |  2
    1  |  3


dtData.Select("ID = 1"); one more rows;

我想要行ID=1和ID2=3如何制作?

你的意思是这样吗?:

dtData.Select("ID=1 AND ID2=3");

好吧,我就是这样做的

    GridFieldDAO dao = new GridFieldDAO();
    //Load My DataTable
    DataTable dt = dao.getDT();
    //Get My rows based off selection criteria
    DataRow[] drs = dt.Select("(detailID = 1) AND (detailTypeID = 2)");
    //make a new "results" datatable via clone to keep structure
    DataTable dt2 = dt.Clone();
    //Import the Rows
    foreach (DataRow d in drs)
    {
        dt2.ImportRow(d);
    }
    //Bind to my new DataTable and it will only show rows based off selection 
    //criteria
    myGrid.DataSource = dt2;
    myGrid.DataBind();
请注意,在我的选择中,我将标准放在和或之间的括号中

希望这有帮助! Mike V

最好用这个:

GridFieldDAO dao = new GridFieldDAO();
//Load My DataTable
DataTable dt = dao.getDT();
//Get My rows based off selection criteria and copy them directly to datatable
DataTable dt2 = dt.Select("(detailID = 1) AND (detailTypeID = 2)").CopyToDataTable();

很好的例子,非常有用。想要添加一件事-如果需要在字符串上选择,请使用以下内容:

DataTable dt2 = dt.Select("state = 'FL' "); 

确保dt中有行

在这里,您可以使用Linq的COPYTODATABLE方法将内容复制到另一个数据表,同时通过筛选选择特定行

DataTable dt2 = dt.Select("state = 'FL' ").CopyToDataTable; 

这是一个比抛出DataRow[]更好的解决方案。如果您的过滤器碰巧没有返回任何行,并且您需要代码深处的某个模式,那么您将无法从空数组中获取它!哪个名称空间有GridFieldDAO?或者这对winforms不可用?未定义CopyToDataTable。我遗漏了什么?这是一种扩展方法。您必须添加对System.Data.DataSetExtensions的引用错误:无法将类型“System.Data.DataRow[]”隐式转换为“System.Data.DataTable”您应该为您的答案添加更多详细信息,并向其他人解释这一操作的原因。
DataTable dt2 = dt.Select("state = 'FL' ").CopyToDataTable;