1

編集:以下のコードが機能します!(私はコメントアウトし、ビルドし、後でコメントを外しましたが、うまくいきました)。

私は を持ってObservableCollectionListBoxます。アイテムの価値がわからないので、表示名だけに基づいてそれらのアイテムのいくつかを選択したいと思います。ただし、キャスト エラーが発生します (IEnumerable から ObservableCollection へ)。

ObservableCollection<ListBoxItem> unselectedcollection
    = new ObservableCollection<ListBoxItem>
        (dt.AsEnumerable()
           .Select(i => new ListBoxItem(i[ColumnNames.LISTNAMECOL].ToString(),
                                        i[ColumnNames.LISTVALUECOL].ToString())));

ObservableCollection<ListBoxItem> selectedcollection
    = new ObservableCollection<ListBoxItem>
        (from item in unselectedcollection.AsEnumerable()
         where (item.Name == "firstName"
                || item.Name == "secondName"
                || item.Name == "thirdName")
         select item);

考えられるさまざまなキャストオプションを試しました。私は何が欠けていますか?

4

2 に答える 2

0

コレクションを処理し、Linq の結果をコレクションに渡すときによくある問題の 1 つは、コレクションが列挙されておらず、ToList を呼び出して列挙すると問題が解決することがよくあります。私はそれを試してみて、それが役立つかどうかを確認します.

ObservableCollection<ListBoxItem> selectedcollection
  = new ObservableCollection<ListBoxItem>(
      unselectedcollection.AsEnumerable()
                          .Where(item => item.Name == "firstName"
                                         || item.Name == "secondName"
                                         || item.Name == "thirdName")
                          .ToList());
于 2013-07-01T03:45:26.610 に答える
0

方法や理由を説明することはできませんが、このセクションをコメントアウトし、テストを続けるために空白のリストで埋めました。私はちょうど戻ってきて、コメントを外して(@nakiyaの要求に従って)正確なエラーメッセージを表示し、再構築しました...

...そしてそれはうまくいきました。

繰り返しになりますが、方法や理由はわかりませんが、少なくとも先に進むことができます。

于 2013-07-01T03:55:36.167 に答える