C#をかなり速く学んでいる間に、私はこのコレクション構文の問題を抱えています。C#listboxコレクションの構文
私はリストボックスlstDataに自分のタイプのMyItemオブジェクトをいくつか追加しました。私は、「使用してSystem.Linqのを含めなかったが、
lstData.Items.Where(x => x.Text == SearchString)
が、リストボックスの項目が.Whereを()がありません。今、私はこのリストボックスと同様にエレガントなLINQ表記を使用しての考えに検索する必要があります; "名前空間。
は、だから私は試してみました:foreach (MyItem item in (MyItem)lstData.Items)
が、これはビルドエラーを与える: 'MySandbox.frmListboxDemo.MyItem' にタイプ 'System.Windows.Forms.ListBox.ObjectCollection' を変換できません。
私が実行可能な何かを書くために管理しなかった:
for (int i = 0; i < lstData.Items.Count; i++)
{
MyItem item = (MyItem)lstData.Items[i];
if (item.Text == SearchString)
{
lstData.SetSelected(i, true);
break;
}
}
など類似したバージョン:長く2行であることが判明し、「VAR」を置き換えることができるもの把握せずに
var item_enum = lstData.Items.GetEnumerator();
while (item_enum.MoveNext()) { etc etc... }
。
私はCollections、ObjectCollections、Enumeratorsなどを使用する方法を理解していますが、学習することは熱心です。特に.Where()バージョンが可能であるか、より良いバージョンがある場合。
ご回答ありがとうございます。これは本当に「FORTRAN」の方法よりもはるかに優れている場合、私は(上記参照)知りませんが、それは私が他のC#のクエリで使用できる方法を教示していない
var item_iter = lstData.Items.Cast<MyItem>()
.Where(x => x.Text.Trim().ToLower() == txtItemName.Text);
foreach (MyItem item in item_iter)
{
int i = lstData.Items.IndexOf(item);
lstData.SetSelected(i, true);
break;
}
:私はこの解決策になってしまいました。
'.OfType' ... –