【问题标题】:Is there a way for a getter to return specific dictionary entries<string, someClass> based on a list of strings?有没有办法让 getter 基于字符串列表返回特定的字典条目<string, someClass>?
【发布时间】:2019-01-10 14:03:34
【问题描述】:

在我的 WPF 应用程序中,我试图根据用户可以编辑的键列表仅检索特定的字典条目。

我正在尝试通过拥有一个用户可以修改的List&lt;string&gt; ListOfKeys、一个包含一堆具有不同变量的 AnObjects 的 Dictionary&lt;string, AnObject&gt; AllObjects 以及一个带有一个包含查询的 get{ }Dictionary&lt;string, AnObject&gt; 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&lt;AClass&gt;有什么问题?
  • 这实际上是一个更好的主意。不过仍然不知道如何过滤该列表。
  • 所有对象。其中(ListOfKeys 包含 item.fieldConnectedWithKey)
  • AllObjects.Where(x => ListOfKeys.Contains(x.Key));

标签: c# list linq dictionary


【解决方案1】:

返回列表而不是字典:

List<AClass> someObjects
get
{
    return AllObjects.Where(x => ListOfKeys.Contains(x.Key)).Select(x => x.Value).toList();
}

【讨论】:

    猜你喜欢
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2020-12-29
    • 2010-09-20
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    相关资源
    最近更新 更多