我有以下结构。
public class ToolSettings
{
public string Extension { get; set; }
public ObservableCollection<Tool> Tools { get; set; }
}
public class Tool
{
public string Name { get; set; }
public string Command { get set; }
}
// Within app code
public ObservableCollection<ToolSettings> settings { get; set; }
我想从设置集合中获取工具集合,其中扩展等于某个字符串。
下面是我的 LINQ 代码,但当我知道还有更多项目时,我只会在我的集合中获取一项。看起来它生成了一个集合的集合,这就是为什么只有一个项目。
myListBox.ItemsSource = from i in settings
where i.Extension == myExtension
select i.Tools;
EDIT:
感谢所有好的(和快速的)答案。结果我只需要第一项,但我知道 SelectMany 方法将来会派上用场。所以,谢谢大家的提醒。这是我使用的完整解决方案。
myListBox.ItemsSource = (from i in settings
where i.Extension == myExtension
select i.Tools).First();
myListBox.ItemsSource = settings.Where(s => s.Extension == myExtension)
.SelectMany(s => s.Tools);
或者,如果您更喜欢查询语法而不是流畅的语法:
myListBox.ItemsSource = from s in settings
where (s.Extension == myExtension)
from t in s.Tools
select t;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)