cap*_*gon 2 c# extension-methods
我想创建一个扩展方法,允许我调用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();
Run Code Online (Sandbox Code Playgroud)
我从这里获取的SerializableDictionary类是这样的,我可以序列化我的webservice中的字典对象,以返回与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;
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)