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

c# – ToDictionary无法按预期工作

发布时间:2020-12-15 08:12:16 所属栏目:百科 来源:网络整理
导读:鉴于以下代码,我无法返回字典. [JsonProperty]public virtual IDictionaryProduct,int JsonProducts{ get { return Products.ToDictionaryProduct,int(x = x.Key,v = v.Value); }}public virtual IDictionaryProduct,int Products { get; set; } 我收到以下
鉴于以下代码,我无法返回字典.
[JsonProperty]
public virtual IDictionary<Product,int> JsonProducts
{
    get
    {
        return Products.ToDictionary<Product,int>(x => x.Key,v => v.Value);
    }
}

public virtual IDictionary<Product,int> Products { get; set; }

我收到以下错误..

‘System.Collections.Generic.IDictionary’ does not contain a definition for ‘ToDictionary’ and the best extension method overload ‘System.Linq.Enumerable.ToDictionary(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer)’ has some invalid arguments

cannot convert from ‘lambda expression’ to ‘System.Func’

cannot convert from ‘lambda expression’ to ‘System.Collections.Generic.IEqualityComparer

Product类没有什么特别之处.它被简单地定义为

class Product 
{
    public virtual int Id { get; set; }
    public virtual String Name { get; set; }
}

解决方法

你为什么用
Products.ToDictionary<Product,v => v.Value)

而不仅仅是

Products.ToDictionary(x => x.Key,v => v.Value)

那是因为

public static Dictionary<TKey,TElement> ToDictionary<TSource,TKey,TElement>(
    this IEnumerable<TSource> source,Func<TSource,TKey> keySelector,TElement> elementSelector
);

看一下数字(3)和泛型类型参数(Func)的类型.

这意味着你需要调用它:

Products.ToDictionary<KeyValuePair<Product,int>,Product,v => v.Value);

(编辑:李大同)

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

    推荐文章
      热点阅读