Enumerable. SingleOrDefault方法:
返回序列中满足指定条件的唯一元素;如果这类元素不存在,则返回默认值;如果有多个元素满足该条件,此方法将引发异常
http://msdn.microsoft.com/zh-cn/library/bb549274.aspx
Dictionary<int, string> dic = new Dictionary<int, string>();
Dictionary<int, string> dic2 = new Dictionary<int, string>();
dic.Add(2, "aaa");
dic.Add(3, "bbb");
string s = dic.SingleOrDefault(d => d.Key == 2).Value; //正确
dic2 = dic.SingleOrDefault(d => d.Key == 2); //报错
Console.WriteLine(s);我想问,既然,SingleOrDefault返回的是序列中满足条件的唯一元素,那么,报错的那一句为什么会报错,返回的就是键值对啊
如果硬是要错的话,为什么正确的那句又是正确的,要错,大家都应该错啊!道理一样啊
返回序列中满足指定条件的唯一元素;如果这类元素不存在,则返回默认值;如果有多个元素满足该条件,此方法将引发异常
http://msdn.microsoft.com/zh-cn/library/bb549274.aspx
Dictionary<int, string> dic = new Dictionary<int, string>();
Dictionary<int, string> dic2 = new Dictionary<int, string>();
dic.Add(2, "aaa");
dic.Add(3, "bbb");
string s = dic.SingleOrDefault(d => d.Key == 2).Value; //正确
dic2 = dic.SingleOrDefault(d => d.Key == 2); //报错
Console.WriteLine(s);我想问,既然,SingleOrDefault返回的是序列中满足条件的唯一元素,那么,报错的那一句为什么会报错,返回的就是键值对啊
如果硬是要错的话,为什么正确的那句又是正确的,要错,大家都应该错啊!道理一样啊
用dic2.Add函数吧
这样并不代表一个集合
你的dic2是Dictionary类型,你的dic.SingleOrDefault(d => d.Key == 2);返回的是KeyValuePair类型,两种不同的类型,你直接等号赋值,这错得太小儿科了吧。
这个是keyvaluepair,不是Dictionary
因为返回的只是一个对象,而keyvaluepair合Dictionary的关系,好比string和string[]的关系