webForumDet fria alternativet

"Select * from [MyDataTable]" ?

4 svar · 361 visningar · startad av CokeLight

CokeLightMedlem sedan juni 2000504 inlägg
#1

Hejsan,

Jag skulle vilja göra motsvarande med en DataTable (pseudokod)

foreach(string aName in sColl)
{
  myID = db.Get("Select myID From aTable Where theName = " + aName);
}

Hur gör man det..?

Jag har lekt lite men vet inte hur jag ska göra riktigt.. här är min testkod:

private void InsertComputers()
{
    string parentLDAP = "LDAP://...";
    List<string> ListOUChildren = adConn.EnumerateOuChildren(parentLDAP);

    StringBuilder sbTemp = new StringBuilder();

    foreach (string ouChild in ListOUChildren)
    {
        //dataViewOU.RowFilter = string.Format("OuName = '{0}'", ouChild);

        DataRow[] rowOU = dataTableOU.Select(string.Format("OuName='{0}'", ouChild), "OuID ASC", DataViewRowState.CurrentRows);

        sbTemp.Append("<br/>OuID: " + rowOU??);
    }

    lblResult.Text += sbTemp.ToString();
}

Nedanstående fungerar men jag vet inte hur jag får ihop ovanstående riktigt..? (är på väg härifrån just nu men kan gärna förklara imorgon så det blir lite tydligare kanske =)

private void InitializeDataTable()
{
			
    DataView dataViewOU = dbConn.RunProcedure("coke_SelectOU").DefaultView;

    dataViewOU.RowFilter = "OuName = '...'";
    dataViewOU.Sort = "OuID ASC";

    foreach (DataRowView rowOU in dataViewOU)
    {
        lblResult.Text += "<br/>OU ID: " + rowOU["OuID"].ToString();
    }
}
emissionMedlem sedan dec. 19996 721 inlägg
#2

Vad är själva problemet? rowOU är en array.

DataRow[] ouRows = dataTableOU.Select(string.Format("OuName='{0}'", ouChild), "OuID ASC", DataViewRowState.CurrentRows);
foreach (DataRow ouRow in ouRows)
{
        sbTemp.AppendFormat("<br/>OuID: {0}",ouRow["OuID"]);
}
CokeLightMedlem sedan juni 2000504 inlägg
#3

Hej Emission, tack för ditt svar =)

I och för sig inget problem om man lägger den foreach loopen inom den första så här:

private void InsertComputers()
{
    string parentLDAP = "LDAP://...";
    List<string> ListOUChildren = adConn.EnumerateOuChildren(parentLDAP);

    StringBuilder sbTemp = new StringBuilder();

    foreach (string ouChild in ListOUChildren)
    {
        DataRow[] rowOU = dataTableOU.Select(string.Format("OuName='{0}'", ouChild), "OuID ASC", DataViewRowState.CurrentRows);
[B] 
        foreach (DataRow row in rowOU)
        {
            sbTemp.AppendFormat("<br/>OuID: {0}", row["OuID"]);
        }
    }
[/B]
    lblResult.Text += sbTemp.ToString();
}

.. fast det kändes lite konstigt att behöva göra en foreach om jag vet att jag bara vill få fram en rad.. måste man göra foreach? I annat fall funkar ju ovanstående.. :)

emissionMedlem sedan dec. 19996 721 inlägg
#4

Nej, du måste inte göra en foreach, men det är en array

DataRow[] ouRows= dataTableOU.Select(string.Format("OuName='{0}'", ouChild), "OuID ASC", DataViewRowState.CurrentRows);
 
if (ouRows.Length>0)
{
   sbTemp.AppendFormat("<br/>OuID: {0}", ouRows[0]["OuID"]);
}
CokeLightMedlem sedan juni 2000504 inlägg
#5

a just det.. dum jag e.. tack.. =)

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)