所以我一直生活在迭代数据并以老式方式找到我感兴趣的东西的黑暗时代,但这个项目我认为我应该让事情变得更优雅并在我知道可以使用的地方使用 LINQ,但是事情不是很顺利。
所以我有两个简单的 ObservableCollections,我想从其中一个中提取所有数据,以匹配另一个的当前选定项。对象很简单...
public class foo
{
//....
public string barID{ get; set; }
//....
}
public class bar
{
public string ID { get; set; }
//....
}
因此,在我的代码中,我选择了 foo,并且我想创建一个包含所有具有匹配 barID 的 bar 的集合...
ObservableCollection<bar> bars =
from data in fooCollection
where data.barID == barCollection.SelectedItem.ID
select data;
所以我根据我在网上找到的 LINQ 的语法尝试了这个,但这会引发无法将 IEnumerable 隐式转换为 ObservableCollection 的编译错误。于是我试了...
ObservableCollection<bar> bars =
(ObservableCollection<bar>)
(from data in fooCollection
where data.barID == barCollection.SelectedItem.ID
select data);
哪个编译但抛出运行时错误......
Unable to cast object of type
'WhereEnumerableIterator`1[TestProj.bar]' to type
'System.Collections.ObjectModel.ObservableCollection`1[TestProj.bar]'.
所以我确信我可以在事后强制转换对象或做其他事情,但我正在寻找一个尽可能优雅的解决方案,因此将这个简单的 LINQ 语句放在一起的一点帮助将不胜感激。此外,对幕后发生的事情的简单解释将极大地帮助我理解一些 LINQ 基础知识。