【发布时间】:2019-01-10 14:03:34
【问题描述】:
在我的 WPF 应用程序中,我试图根据用户可以编辑的键列表仅检索特定的字典条目。
我正在尝试通过拥有一个用户可以修改的List<string> ListOfKeys、一个包含一堆具有不同变量的 AnObjects 的 Dictionary<string, AnObject> AllObjects 以及一个带有一个包含查询的 get{ } 的 Dictionary<string, AnObject> SomeObjects 来解决这个问题只返回来自AllObjects 的条目,其中AllObjects 中的键与ListOfKeys 中的条目匹配。
我在查询中输入了什么来完成这项工作? 另外,有什么建议我应该用另一种方式来解决这个问题吗?
XAML:
<ItemsControl ItemsSource="{Binding SomeObjects.Values}" Grid.Row="1">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding someText}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
C#
public class AClass
{
string someText;
int someNumber
[...] etc.
}
public Dictionary<string, AClass> AllObjects;
public List<string> ListOfKeys;
public Dictionary<string, AClass> SomeObjects
{
get
{
return AllObjects.Where(a key in AllObjects matches an entry in the ListOfKeys);
}
}
【问题讨论】:
-
绑定过滤
List<AClass>有什么问题? -
这实际上是一个更好的主意。不过仍然不知道如何过滤该列表。
-
所有对象。其中(ListOfKeys 包含 item.fieldConnectedWithKey)
-
AllObjects.Where(x => ListOfKeys.Contains(x.Key));
标签: c# list linq dictionary