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

それはうまくいきませんそれは私にこのエラーを与えます:

「System.Data.DataColumn」には「GetEnumerator」のパブリック定義が含まれていないため、foreachステートメントは「System.Data.DataColumn」タイプの変数を操作できません。

どうやってやるの ?(forループソリューションは必要ありません)。

4

4 に答える 4

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

またはフルリンクスタイル:

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 に答える