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]