草庐IT

KeyValuePair

全部标签

c# - 无法将 keyValuePair 直接添加到 Dictionary

我想添加一个KeyValuePair到Dictionary我不能。我必须分别传递键和值,这必然意味着Add方法必须创建一个新的KeyValuePair对象才能插入,这效率不高。我不敢相信没有Add(KeyValuePair)重载Add方法。谁能提出这种明显疏忽的可能原因? 最佳答案 您可以使用IDictionary提供Add(KeyValuePair)的界面方法:IDictionarydictionary=newDictionary();dictionary.Add(newKeyValuePair(0,"0"));dictionar

c# - 通过 EF/Linq 转换到 KeyValuePair

我正在尝试从EF/Linq查询中加载KeyValuePairs列表,如下所示:return(fromoincontext.myTableselectnewKeyValuePair(o.columnA,o.columnB)).ToList();我的问题是这会导致错误"OnlyparameterlessconstructorsandinitializersaresupportedinLINQtoEntities."有没有简单的方法解决这个问题?我知道我可以为此创建一个自定义类而不是使用KeyValuePair,但这看起来确实像是在重新发明轮子。 最佳答案

c# - 为什么我不能将 KeyValuePair<TKey, TValue> 与默认值进行比较

在.Net2.5中,我通常可以获得值与其类型默认值之间的相等比较(==)if(myString==default(string))但是,当我尝试对默认KeyValuePair和KeyValuePair进行相等比较时,出现以下异常代码示例(来自预扩展方法,proto-lambda静态ListUtilities类:))publicstaticTKeyFirstKeyOrDefault(Dictionarylookups,Predicate>predicate){KeyValuePairpair=FirstOrDefault(lookups,predicate);returnpair==de

c# - 将 KeyValuePair 列表转换为 IDictionary "C#"

我的场景,如何转换List>进入IDictionary? 最佳答案 使用LINQ非常非常简单:IDictionarydictionary=list.ToDictionary(pair=>pair.Key,pair=>pair.Value);请注意,如果有任何重复的键,这将失败-我认为这没问题? 关于c#-将KeyValuePair列表转换为IDictionary"C#",我们在StackOverflow上找到一个类似的问题: https://stackover

c# - 将字典转换为 List<KeyValuePair>

我知道可以将KeyValuePair的列表转换为字典,但是有没有一种快速的方法(除了手动循环之外)执行反之亦然的操作?这是手动方式,foreach(KeyValuePairpindict){list.Add(newKeyValuePair(p.Key,p.Value));}并没有那么糟糕,但我只是好奇。 最佳答案 转换Dictionary到List>你可以说varlist=dictionary.ToList();或更冗长varlist=dictionary.ToList>();这是因为Dictionary工具IEnumerable>

c# - 如何修改 KeyValuePair 的值?

当我尝试修改项目的值时遇到问题,因为它只是一个只读字段。KeyValuePair我尝试过不同的选择,例如:Dictionary但是我也遇到了同样的问题。有没有办法将值字段设置为新值? 最佳答案 不能修改,可以换成新的。varnewEntry=newKeyValuePair(oldEntry.Key,newValue);或字典:dictionary[oldEntry.Key]=newValue; 关于c#-如何修改KeyValuePair的值?,我们在StackOverflow上找到一个类

c# - 使用 LINQ 的 FirstOrDefault 检查 KeyValuePair 是否存在

我有一个类型的字典Dictionary我想使用返回满足条件的第一个实例varavailable=m_AvailableDict.FirstOrDefault(p=>p.Value==0)但是,如何检查我是否真的取回了KeyValuePair?在没有编译器错误的情况下,我似乎无法使用!=或==来检查default(KeyValuePair)。有一个类似的线程here这似乎没有解决方案。我实际上能够通过获取key并检查Guid的默认值来解决我的特定问题,但我很好奇是否有使用键值对执行此操作的好方法。谢谢 最佳答案 如果你只关心存在,你可

c# - foreach KeyValuePair in NameValueCollection?

我有这个代码:NameValueCollectionnv=HttpUtility.ParseQueryString(queryString);foreach(KeyValuePairprinnv){//processKeyValuePair}这可以编译,但是当我尝试运行它时,我得到一个InvalidCastException。这是为什么?为什么我不能使用KeyValuePair来迭代NameValueCollection,我应该使用什么来代替? 最佳答案 首先,NameValueCollection不使用KeyValuePair.另

c# - 如何确保 FirstOrDefault<KeyValuePair> 已返回值

这是我正在尝试做的事情的简化版本:vardays=newDictionary();days.Add(1,"Monday");days.Add(2,"Tuesday");...days.Add(7,"Sunday");varsampleText="Myfavoritedayoftheweekis'xyz'";varday=days.FirstOrDefault(x=>sampleText.Contains(x.Value));由于字典中不存在“xyz”,因此FirstOrDefault方法不会返回有效值。我希望能够检查这种情况,但我意识到我无法将结果与“null”进行比较,因为KeyVa

c# - 从 IEnumerable<KeyValuePair<>> 重新创建字典

我有一个返回IEnumerable>的方法,但一些调用者要求方法的结果是字典。如何转换IEnumerable>进入Dictionary这样我就可以使用TryGetValue?方法:publicIEnumerable>GetComponents(){//...yieldreturnnewKeyValuePair(t.Name,controlInformation);}来电者:Dictionaryactual=target.GetComponents();actual.ContainsKey("something"); 最佳答案 如果您