加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何对字典执行LINQ查询?

发布时间:2020-12-15 23:39:14 所属栏目:百科 来源:网络整理
导读:我有字典,其中包含ID作为字符串,城市名称也作为字符串. 我想通过它的名字和返回ID找到城市.有我的代码: public string GetIdByCityName(string name){ if (Cities.ContainsValue(name)) { return Cities .Select(x = x) .Where(v = v.Value == name) .Selec
我有字典,其中包含ID作为字符串,城市名称也作为字符串.
我想通过它的名字和返回ID找到城市.有我的代码:

public string GetIdByCityName(string name)
{
    if (Cities.ContainsValue(name))
    {
        return Cities
            .Select(x => x)
            .Where(v => v.Value == name)
            .Select(k => k.Key)
            .ToString();
    }
    else
    {
        return string.Empty;
    }
}

城市当然是我的字典.我有一个问题,因为这段代码不起作用.我试图使用调试器,我发现从方法返回的值:

System.Linq.Enumerable+WhereSelectEnumerableIterator
2[System.Collections.Generic.KeyValuePair
2[System.String,System.String],System.Boolean]

我究竟做错了什么?

解决方法

您会看到此结果,因为.Select(k => k.Key)是一个LINQ查询,其类型为WhereSelectEnumerableIterator.它不是一个字符串.将ToString()应用于查询类型时,您会看到该类型的名称.

您可以选择与给定名称匹配的第一个条目:

return Cities.Where(kvp => kvp.Value == name).Select(kvp => kvp.Key).FirstOrDefault();

注意:几个城市可以有相同的名称.你也不需要这样做.选择(x => x),因为它的项目是自我输入.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读