15

my datatable;

    dtData

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


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

i want row "ID = 1 And ID2 = 3" how to make ?

6 Answers 6

32

Do you mean like this?:

dtData.Select("ID=1 AND ID2=3");
Sign up to request clarification or add additional context in comments.

Comments

13

Okay, here is how I do such things...

    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();

Notice in my Select() I put the criteria in Parens between AND and OR

Hope this helps! Mike V

2 Comments

This is a better solution than throwing a DataRow[] around. If your filter happens to return no rows, and you need the schema somewhere deep in your code, you're not going to get it from an empty array!
Which namespace has GridFieldDAO? or isn't this available to winforms?
6

Better use this :

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();

2 Comments

CopyToDataTable is not defined. I've missed something?
It is an extension method. You have to add a reference to System.Data.DataSetExtensions msdn.microsoft.com/en-us/library/bb396189(v=vs.110).aspx
4
DataTable dt2 = dt.Select("ID = 1").CopyToDataTable;

make sure dt has rows in it

Comments

2

Here you can copy your contents to another DataTable by using CopyToDataTable method of Linq while selecting the specific rows by filtering.

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

1 Comment

You should add more detail to you answer, explain to the others why this is working.
0

Great example and very helpful. Wanted to add one thing - if you need to select on a string use something like:

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

1 Comment

Error: Cannot implicitly convert type 'System.Data.DataRow[]' to 'System.Data.DataTable'

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.