如何通过属性值从字典中获取项目

udi*_*idu 9 c# linq lambda

我有一个Dictionary<string, User>.

User是具有属性的对象UID,UNIQUE KEY等等.我的词典键是UNIQUE KEY用户的.

现在,我希望User通过a UID而不是键来获取我的字典值,例如ContainsKey......如何用lambda expr或linq完成?有一个很好的解决方案吗?

ken*_*n2k 16

这是一个工作样本:

using System;
using System.Collections.Generic;
using System.Linq;

internal class User
    {
        public string ID { get; set; }

        public string Name { get; set; }
    }

    internal class Program
    {
        private static void Main(string[] args)
        {
            Dictionary<string, User> dic = new Dictionary<string, User>();
            dic.Add("1", new User { ID = "id1", Name = "name1" });
            dic.Add("2", new User { ID = "id2", Name = "name2" });
            dic.Add("3", new User { ID = "id3", Name = "name3" });

            User user = dic.Where(z => z.Value.ID == "id2").FirstOrDefault().Value;

            Console.ReadKey();
        }
    }
Run Code Online (Sandbox Code Playgroud)


mqp*_*mqp 5

return dict.Single(x => x.Value.UID == target);
Run Code Online (Sandbox Code Playgroud)

当然,如果你的设计涉及不断地进行线性搜索,你可能会发现你的设计是有问题的Dictionary.