LINQ 中的 ToLookup 运算符是一种扩展方法,用于从源中提取一组键/值对。在这里,结果集合中的每个元素都是一个通用的 Lookup 对象。 Lookup 对象保存 Key 和与 Key 匹配的子序列项。
LINQ ToLookup 运算符的语法
以下是使用 LINQ ToLookup 运算符将集合作为键/值对返回的语法。
C# 代码
var Emp = objEmployee.ToLookup(x => x.Department);
在上面的语法中,我们使用 ToLookup 运算符将 "objEmployee" 的集合转换为键/值对列表。
方法语法中的 LINQ ToLookup() 运算符示例
下面是在方法语法中使用 LINQ ToLookup() 将输入集合项转换为键/值对列表的示例。
C# 代码
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
//create an objEmployee of the class Employee and create a list of Employee
List<Employee> objEmployee = new List<Employee>()
{
new Employee(){ Name="Akshay Tyagi", Department="IT", Country="India"},
new Employee(){ Name="Vaishali Tyagi", Department="Marketing", Country="Australia"},
new Employee(){ Name="Arpita Rai", Department="HR", Country="China"},
new Employee(){ Name="Shubham Ratogi", Department="Sales", Country="USA"},
new Employee(){ Name="Himanshu Tyagi", Department="Operations", Country="Canada"}
};
//objEmployee.ToLookup() method is used to print the value of the data in the pair/collection of items.
var Emp = objEmployee.ToLookup(x => x.Department);
Console.WriteLine("Grouping Employees by Department");
Console.WriteLine("---------------------------------");
foreach (var KeyValurPair in Emp)
{
Console.WriteLine(KeyValurPair.Key);
// Lookup employees by Department
foreach (var item in Emp[KeyValurPair.Key])
{
Console.WriteLine("\t" + item.Name + "\t" + item.Department + "\t" + item.Country);
}
}
Console.ReadLine();
}
}
class Employee
{
public string Name { get; set; }
public string Department { get; set; }
public string Country { get; set; }
}
}
在上面的示例中,我们使用 ToLookup 方法按部门对 Employee 进行分组。由于 ToLookup 生成键/值对,因此我们在 foreach 循环中使用它,内部循环根据作为输入传递的键提取值。
输出:

查询语法中的 LINQ ToLookup() 示例
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
List<Employee> objEmployee = new List<Employee>()
{
new Employee(){ Name="Ashish ", Department="Marketing", Country="India"},
new Employee(){ Name="John", Department="IT", Country="Australia"},
new Employee(){ Name="Kim", Department="Sales", Country="China"},
new Employee(){ Name="Marcia", Department="HR", Country="USA"},
new Employee(){ Name="John", Department="Operations", Country="Canada"}
};
var emp = (from employee in objEmployee select employee).ToLookup(x => x.Department);
Console.WriteLine("Grouping Employees by Department");
Console.WriteLine("---------------------------------");
foreach (var KeyValurPair in emp)
{
Console.WriteLine(KeyValurPair.Key);
// Lookup employees by Department
foreach (var item in emp[KeyValurPair.Key])
{
Console.WriteLine("\t" + item.Name + "\t" + item.Department + "\t" + item.Country);
}
}
Console.ReadLine();
}
}
class Employee
{
public string Name { get; set; }
public string Department { get; set; }
public string Country { get; set; }
}
}
输出:

相关用法
- LINQ ToList()用法及代码示例
- LINQ ToArray()用法及代码示例
- LINQ ToDictionary()用法及代码示例
- LINQ AsEnumrable()用法及代码示例
- LINQ ElementAtOrDefault()用法及代码示例
- LINQ Count()用法及代码示例
- LINQ Single()用法及代码示例
- LINQ sum()用法及代码示例
- LINQ Min()用法及代码示例
- LINQ LastOrDefault()用法及代码示例
- LINQ FirstOrDefault()用法及代码示例
- LINQ GroupBy()用法及代码示例
- LINQ Cast()用法及代码示例
- LINQ Max()用法及代码示例
- LINQ Aggregate()用法及代码示例
- LINQ DefaultfEmpty()用法及代码示例
- LINQ Last()用法及代码示例
- LINQ ElementAt()用法及代码示例
- LINQ OfType()用法及代码示例
- Lodash _.sampleSize()用法及代码示例
注:本文由纯净天空筛选整理自 LINQ ToLookup() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。