gpt4 book ai didi

c# - 如何创建一个扩展方法,允许我调用 ToSerializableDictionary(p => p.ID) 而不是 .ToDictionary(p => p.ID)

转载 作者:行者123 更新时间:2023-11-30 19:11:01 35 4
gpt4 key购买 nike

我想创建一个扩展方法,允许我调用 ToSerializableDictionary(p => p.ID)而不是 .ToDictionary(p => p.ID)在以下 LINQ 上下文中。虽然我不确定我应该制作一个扩展方法来替换哪个类 ToDictionary<T> .

response.attributes = (
from granuleGroup in groups
let granuleRow = granuleGroup.First().First()
select new USDAttributes()
{
id = (int)granuleRow["id"],
...
attributes =
(
...
).ToDictionary(p => p.ID) <--** LINE IN QUESTION **
}
).ToList();

My SerializableDictionary class取自 here这样我就可以在我的 web 服务中序列化字典对象以返回与 JSON 兼容的哈希表。

最初我为 IDictionary 创建了一个扩展方法,所以我可以这样做:...).ToDictionary(p => p.ID).ToSerializableDictionary();但这是一个彻底的失败,因为这是我第一次创建扩展方法,我不知道我在做什么。

public static class CollectionExtensions
{

public static SerializableDictionary<string, object> ToSerializableDictionary(this IDictionary<string,object> sequence)
{

SerializableDictionary<string, object> sDic = new SerializableDictionary<string, object>();


foreach (var item in sequence)
{

}

return sDic;

}
}

最佳答案

public static SerializableDictionary<TKey, T> ToSerializableDictionary<TKey, T>(this IEnumerable<T> seq, Func<T, TKey> keySelector)
{
var dict = new SerializableDictionary<TKey, T>();
foreach(T item in seq)
{
TKey key = keySelector(item);
dict.Add(key, item);
}

return dict;
}

关于c# - 如何创建一个扩展方法,允许我调用 ToSerializableDictionary(p => p.ID) 而不是 .ToDictionary(p => p.ID),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13807552/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com