1

我正在尝试找到一种快速方法来在 DataTable 的列中查找字符串并将其添加到组合框,这是我迄今为止尝试的代码:

adapter = new SqlDataAdapter("Select Id_Editeur ID,Libelle_Editeur Editeur from Editeur", myClass.cnx);
            adapter.Fill(myClass.ds, "Editeur");
            foreach (String str in myClass.ds.Tables["Editeur"].Columns[1].ToString())
                editeurBox.Properties.Items.Add(str);

那是行不通的,它给了我这个错误:

foreach 语句无法对“System.Data.DataColumn”类型的变量进行操作,因为“System.Data.DataColumn”不包含“GetEnumerator”的公共定义

我怎样才能做到这一点 ?(我不想要 for 循环解决方案)。

4

4 回答 4

5
foreach (var row in myClass.ds.Tables["Editeur"].AsEnumerable())
{
    editeurBox.Properties.Items.Add(row[1].ToString());
}

或完整的 linq 样式:

editeurBox.Properties.Items.AddRange(
    myClass.ds.Tables["Editeur"]
       .AsEnumerable()
       .Select(dr => dr[1].ToString()
);
于 2012-09-27T17:44:26.983 回答
4

您可以尝试使用此代码 - 基于LINQ Field operator

var results = from myRow in myDataTable.AsEnumerable()
where myRow.Field<string>("RowNo") == "yourSearch"
select myRow;
于 2012-09-27T17:46:07.563 回答
1

我认为您需要遍历行并获取所需的列。您的代码正在尝试遍历不包含任何数据的列集合:

foreach (DataRow row in myClass.ds.Tables["Editeur"].Rows)
                    editeurBox.Properties.Items.Add(row[1].ToString());
于 2012-09-27T17:45:00.323 回答
1
        string TableSelect;
        DataTable dt = GetSomeData();

        foreach (DataRow row in dt.Rows)
        {
            TableSelect = "EmplNo = " + row["EmplNo"].ToString();
            DataRow[] foundrows;
            foundrows = dt.Select(TableSelect);
            if (foundrows.Count() > 0)
            {
                //do something useful here :)
            }
        }
于 2012-09-27T17:55:28.803 回答