Linq observable collection cast错误

时间:2013-07-01 02:08:18

标签: c# linq

编辑:以下代码作品! (我注释掉了,构建了,后来取消注释并且它起作用了。)

ObservableCollection我有一个ListBox。我想仅根据显示名称选择其中一些项目,因为我不知道项目值。但是我得到一个转换错误(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);

我已经尝试了我能想到的各种铸造选项。我错过了什么?

2 个答案:

答案 0 :(得分:0)

我在处理集合并将Linq结果传递给它们时遇到的一个常见问题是集合未枚举,通过调用ToList枚举它通常可以解决问题。我会试一试,看看它是否有帮助。

ObservableCollection<ListBoxItem> selectedcollection
  = new ObservableCollection<ListBoxItem>(
      unselectedcollection.AsEnumerable()
                          .Where(item => item.Name == "firstName"
                                         || item.Name == "secondName"
                                         || item.Name == "thirdName")
                          .ToList());

答案 1 :(得分:0)

我无法解释如何或为什么,但我在这一节中注释掉了,用空白列表填写以继续测试。我刚刚回来并取消注释它以给出确切的错误消息(根据@nakiya的要求)并重建......

......它有效。

我再一次不知道如何或为什么,但至少我可以继续前进。