LINQ提供的.ToLookup函数有没有办法要求多个键?我承认这乍一看似乎不直观,我预计没有实际的方法可以做到这一点,但我希望有人知道方法。我基本上希望能够通过两个值进行查找,例如string和int,并检索具有这两个值的对象。例子publicclassMyClass{publicstringStringProp{get;set;}publicintIntProp{get;set;}publicobjectMoreData{get;set;}}publicclassMain{publicvoidMain(){HashSetset=newHashSet();set.Add(newMyC
.ToLookup返回ILookup.ILookup还实现了接口(interface)IEnumerable>..GroupBy返回IEnumerable>.ILookup具有方便的索引器属性,因此它可以以类似字典(或类似查找)的方式使用,而GroupBy则不能。没有索引器的GroupBy使用起来很痛苦;几乎可以引用返回对象的唯一方法是循环遍历它(或使用另一种LINQ扩展方法)。换句话说,在GroupBy起作用的任何情况下,ToLookup也将起作用。所有这些都让我产生疑问,为什么我要为GroupBy而烦恼?为什么要存在? 最佳答案
LINQToDictionary和ToLookup有什么区别?他们似乎在做同样的事情。 最佳答案 字典是一个1:1映射(每个键映射到一个值),并且字典是事后可变(可编辑)的。查找是一个1:many映射(多映射;每个键映射到具有该键的值的IEnumerable),ILookup上没有变异界面。作为旁注,您可以查询查找(通过索引器)一个不存在的键,您将得到一个空序列。对字典做同样的事情,你会得到一个异常(exception)。那么:有多少记录共享每个键?一种过于简化的看待方式是Lookup与Dictionary>大致相当