我有一个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)
return dict.Single(x => x.Value.UID == target);
Run Code Online (Sandbox Code Playgroud)
当然,如果你的设计涉及不断地进行线性搜索,你可能会发现你的设计是有问题的Dictionary.