1.筛选 (Where)
筛选集合中的元素。
类似python中列表推导式中的if
示例
int[] numbers = { 1, 2, 3, 4, 5, 6 };
var evenNumbers = numbers.Where(n => n % 2 == 0);
foreach (var num in evenNumbers)
{
Console.WriteLine(num);
}
// 输出:2, 4, 6
python中的实现
[ i for i in range(0,99) if i % 2 == 0]
2.投影 (Select)
将集合中的元素映射到新的形式
类似于 Python 列表推导式中的映射。
示例
string[] words = { "apple", "banana", "cherry" };
var wordLengths = words.Select(w => w.Length);
foreach (var length in wordLengths)
{
Console.WriteLine(length);
}
// 输出:5, 6, 6
python中的实现
[len(word) for word in ["apple", "banana", "cherry"]]
3.排序 (OrderBy, OrderByDescending)
对集合进行升序或降序排序
类似于 Python 中的 sorted()。
OrderBy示例
//仅演示OrderBy,OrderByDescending同理
string[] names = { "Charlie", "Alice", "Bob" };
var sortedNames = names.OrderBy(name => name);
foreach (var name in sortedNames)
{
Console.WriteLine(name);
}
// 输出:Alice, Bob, Charlie
python中的实现
sorted(["Charlie", "Alice", "Bob"])
4.聚合 (Aggregate)
通过指定的函数将集合中的元素合并。
类似于 Python 中的 functools.reduce()。
示例
int[] numbers = { 1, 2, 3, 4, 5 };
int sum = numbers.Aggregate((total, next) => total + next);
Console.WriteLine(sum);
// 输出:15
python的实现
from functools import reduce
reduce(lambda total, next: total + next, [1, 2, 3, 4, 5])
5.分组 (GroupBy)
将集合按某个条件分组。 类似于 Python 中使用 itertools.groupby()。
示例
string[] words = { "apple", "banana", "cherry", "avocado" };
var groupedWords = words.GroupBy(w => w[0]);
foreach (var group in groupedWords)
{
Console.WriteLine($"Key: {group.Key}");
foreach (var word in group)
{
Console.WriteLine(word);
}
}
// 输出:
// Key: a
// apple
// avocado
// Key: b
// banana
// Key: c
// cherry
python的实现
from itertools import groupby
words = ["apple", "banana", "cherry", "avocado"]
grouped_words = {k: list(v) for k, v in groupby(sorted(words), key=lambda w: w[0])}
6.连接 (Join)
连接两个集合,并返回匹配的元素。 类似于 Python 中使用 zip() 和列表推导式。
示例
var people = new[]
{
new { Name = "John", CityId = 1 },
new { Name = "Jane", CityId = 2 },
new { Name = "Jake", CityId = 1 }
};
var cities = new[]
{
new { CityId = 1, CityName = "New York" },
new { CityId = 2, CityName = "Los Angeles" }
};
var peopleInCities = people.Join(
cities,
person => person.CityId,
city => city.CityId,
(person, city) => new { person.Name, city.CityName }
);
foreach (var personInCity in peopleInCities)
{
Console.WriteLine($"{personInCity.Name} lives in {personInCity.CityName}");
}
// 输出:
// John lives in New York
// Jake lives in New York
// Jane lives in Los Angeles
python的实现
people = [
{"Name": "John", "CityId": 1},
{"Name": "Jane", "CityId": 2},
{"Name": "Jake", "CityId": 1}
]
cities = [
{"CityId": 1, "CityName": "New York"},
{"CityId": 2, "CityName": "Los Angeles"}
]
people_in_cities = [
{**person, **city} for person in people for city in cities if person["CityId"] == city["CityId"]
]
7.去重 (Distinct)
移除集合中的重复元素。 类似于 Python 中的 set()。
示例
int[] numbers = { 1, 2, 2, 3, 3, 3, 4 };
var distinctNumbers = numbers.Distinct();
foreach (var num in distinctNumbers)
{
Console.WriteLine(num);
}
// 输出:1, 2, 3, 4
python的实现
list(set([1, 2, 2, 3, 3, 3, 4]))
8.获取集合的前几个元素 (Take)
获取集合中的前 N 个元素。 类似于 Python 中的切片操作。
示例
int[] numbers = { 1, 2, 3, 4, 5 };
var firstThree = numbers.Take(3);
foreach (var num in firstThree)
{
Console.WriteLine(num);
}
// 输出:1, 2, 3
python
[1, 2, 3, 4, 5][:3]
9.跳过集合的前几个元素 (Skip)
跳过集合中的前 N 个元素。 类似于 Python 中的切片操作。
示例
int[] numbers = { 1, 2, 3, 4, 5 };
var allButFirstTwo = numbers.Skip(2);
foreach (var num in allButFirstTwo)
{
Console.WriteLine(num);
}
// 输出:3, 4, 5
python的实现
[1, 2, 3, 4, 5][2:]
10.合并两个集合 (Union)
将两个集合合并,并移除重复项。 类似于 Python 中的集合操作。
示例
int[] numbers1 = { 1, 2, 3 };
int[] numbers2 = { 3, 4, 5 };
var union = numbers1.Union(numbers2);
foreach (var num in union)
{
Console.WriteLine(num);
}
// 输出:1, 2, 3, 4, 5
python的实现
set([1, 2, 3]).union([3, 4, 5])
11.检查是否包含元素 (Contains)
检查集合中是否包含指定元素。 类似于 Python 中的 in 关键字。
示例
int[] numbers = { 1, 2, 3, 4, 5 };
bool hasThree = numbers.Contains(3);
Console.WriteLine(hasThree);
// 输出:True
python的实现
3 in [1, 2, 3, 4, 5]