【问题标题】:How to select from List of KeyValuePair?如何从 KeyValuePair 列表中进行选择?
【发布时间】:2015-10-15 04:52:18
【问题描述】:

我有一个 KeyValuePair 列表(键是字符串类型,值是 int 类型)。我想返回键值对列表,它将获得我的匹配条件 示例:返回 Key = "A" 和 Value = 10 的列表。

select 将如何处理这个问题以及如何编写表达式以获得我需要的结果?

【问题讨论】:

    标签: c# generic-list


    【解决方案1】:

    除了使用 KeyValuePair 列表,您还可以使用

    Dictionary <string, int> dictionary = new Dictionary <string, int> ().
    

    要搜索我们的集合,我们将使用 First 运算符,如果我们使用运算符 FirstOrDefault 会更好。为什么?说明如下。通过运算符搜索要快得多,因为集合是逐个元素搜索到满足条件的第一个遇到的项目。同时,运算符 Where 搜索整个集合。

    现在我们正在向字典中添加一个新条目,键必须是唯一的(它们不能是具有相同键的两个条目)。

    例如,让我们向集合中添加一些条目。

    dictionary.Add ("one", 1);
    dictionary.Add ("two", 2);
    dictionary.Add ("three", 3);
    

    现在,使用 LINQ 可以非常简单快捷地获取我们感兴趣的项目。然后我们可以寻找关键元素,因为我们知道这是独一无二的。 有两种方式:

    第一种方式保证我们在没有元素搜索的情况下不会返回异常(例如Key = "four")。结果将是一个空键和一个值 0。

    KeyValuePair <string, int> results = dictionary.FirstOrDefault (v => v.Key.Equals ("two"));
    

    当元素搜索不在集合中时,第二种方式可能会产生错误。

    KeyValuePair <string, int> results = dictionary.First (v => v.Key.Equals ("two"));
    

    现在您可以检索值了:

    string key = results.Key;
    int value = results.Value;
    

    【讨论】:

      【解决方案2】:

      您可以像这样使用 LINQ 表达式:

      IList<KeyValuePair<string, int>> values = new List<KeyValuePair<string, int>>();
      

      添加您的关键值。

      IList<KeyValuePair<string, int>> result = values.Where(v => v.Key == "A" && v.Value == 10).ToList();
      

      【讨论】:

        【解决方案3】:
        var list = kvList.Where(kv => kv.Key == "A" && kv.Value == 10).ToList();
        

        【讨论】:

          猜你喜欢
          • 2013-09-02
          • 1970-01-01
          • 1970-01-01
          • 2012-05-08
          • 2017-06-17
          • 1970-01-01
          • 2018-07-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多