打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#中ToDictionary,ToLookup
学习标签: 集合
本文导读:C#中ToDictionary用于将集合转换为Dictionary,C#中ToLookup操作符将创建一个Lookup<TKey, TElement>对象,这是一个one-to-many集合,一个Key可以对应多个Value。Lookup,不像Dictionary, 是不可改变的。这意味着一旦你创建一个lookup, 你不能添加或删除元素。

一、C#中ToDictionary

ToDictionary中并没有给我们做key的重复值判断,那也就侧面说明ToDictionary在kv中只能是 “一对一”的关系,也就是v中永远只会有一条记录

 

定义

 

C# 代码   复制
public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(
this IEnumerable<TSource> source,
Func
<TSource, TKey> keySelector
)

 

实例

 
C# 代码   复制
class Package
{
public string Company { get; set; }
public double Weight { get; set; }
public long TrackingNumber { get; set; }
}
public static void ToDictionaryEx1()
{
List
<Package> packages =
new List<Package>
{ new Package { Company = "Coho Vineyard", Weight = 25.2, TrackingNumber = 89453312L },
new Package { Company = "Lucerne Publishing", Weight = 18.7, TrackingNumber = 89112755L },
new Package { Company = "Wingtip Toys", Weight = 6.0, TrackingNumber = 299456122L },
new Package { Company = "Adventure Works", Weight = 33.8, TrackingNumber = 4665518773L } }
;
// Create a Dictionary of Package objects,
// using TrackingNumber as the key.
Dictionary<long, Package> dictionary =
packages.ToDictionary(p
=> p.TrackingNumber);
foreach (KeyValuePair<long, Package> kvp in dictionary)
{
outputBlock.Text
+= String.Format(
"Key {0}: {1}, {2} pounds",
kvp.Key,
kvp.Value.Company,
kvp.Value.Weight)
+ "\\n";
}
}

 

二、C#中ToLookup

ToLookup() 方法创建一个类似 字典(Dictionary ) 的列表,这是一个one-to-many集合,一个Key可以对应多个Value。

Lookup,不像Dictionary, 是不可改变的。 这意味着一旦你创建一个lookup, 你不能添加或删除元素。

 

定义

 

C# 代码   复制
public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(
this IEnumerable<TSource> source,
Func
<TSource, TKey> keySelector
)

 

实例1

 
C# 代码   复制
var dic
= ticketlist.ToLookup(i => i.OrderID);
foreach (var item in dic)
{
Console.WriteLine(
"订单号:" + item.Key);
foreach (var item1 in item)
{
Console.WriteLine(
"\\t\\t" + item1.TicketNo + " " + item1.Description);
}
}

 

实例2、得到某个类别的所有产品

 
C# 代码   复制
private static void PrintCategory(ILookup<string, Product> productsByCategory,string categoryName)
{
foreach (var item in productsByCategory[categoryName])
{
Console.WriteLine(item);
}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linq之旅:Linq入门详解(Linq to Objects)
LINQ标准查询运算符执行方式-非流式处理
C#集合类型大盘点
泛型与反射
Linq表达式拓展类(Or条件,排除重复等)
Ten reasons not to use a statically typed functional programming language | F# for fun and profit
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服