我有以下结构.
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; }
Run Code Online (Sandbox Code Playgroud)
我想从设置集合中获取Tools集合,其中Extension等于某个字符串.
下面是我的LINQ代码,但是当我知道还有更多时,我只收集了我的收藏中的一个项目.看起来它产生了一个集合的集合,这就是为什么只有一个项目.
myListBox.ItemsSource = from i in settings
where i.Extension == myExtension
select i.Tools;
Run Code Online (Sandbox Code Playgroud)
编辑:
感谢所有好的(和快速的)答案.事实证明我只需要第一个项目,但我知道SelectMany方法将来会派上用场.所以,感谢所有的提醒.这是我使用的完整解决方案.
myListBox.ItemsSource = (from i in settings
where i.Extension == myExtension
select i.Tools).First();
Run Code Online (Sandbox Code Playgroud)
myListBox.ItemsSource = settings.Where(s => s.Extension == myExtension)
.SelectMany(s => s.Tools);
Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢使用流利语法的查询语法:
myListBox.ItemsSource = from s in settings
where (s.Extension == myExtension)
from t in s.Tools
select t;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5945 次 |
| 最近记录: |