System.Linq:这个命名空间包含一些用于 LINQ 查询的扩展方法,如 Where、Select、OrderBy 等,我们可以使用这些方法来方便地对集合进行筛选、排序等操作,帮我写出以恶脚本案例,适应linq库下所有方法
时间: 2024-03-27 20:36:36 浏览: 83
好的,以下是一个使用LINQ库中的所有方法的案例代码:
```csharp
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class LinqUsageExample : MonoBehaviour
{
void Start()
{
// 创建一个int类型的数组
int[] nums = { 1, 2, 3, 4, 5 };
// 使用Where方法筛选出数组中大于3的元素
var filtered = nums.Where(x => x > 3);
Debug.Log("Filtered: " + string.Join(",", filtered));
// 使用Select方法将数组元素转为字符串
var strArray = nums.Select(x => x.ToString()).ToArray();
Debug.Log("String array: " + string.Join(",", strArray));
// 使用OrderBy方法将数组元素按降序排序
var sorted = nums.OrderByDescending(x => x);
Debug.Log("Sorted: " + string.Join(",", sorted));
// 使用FirstOrDefault方法获取数组中第一个大于3的元素,如果不存在则返回默认值0
var firstOrDefault = nums.FirstOrDefault(x => x > 3);
Debug.Log("FirstOrDefault: " + firstOrDefault);
// 创建一个字符串列表
List<string> names = new List<string>() { "Alice", "Bob", "Charlie", "David", "Eve" };
// 使用Any方法判断列表中是否存在以'B'开头的字符串
var hasBName = names.Any(x => x.StartsWith("B"));
Debug.Log("Has B name: " + hasBName);
// 使用All方法判断列表中的所有字符串是否均以字母开头
var allLetters = names.All(x => char.IsLetter(x[0]));
Debug.Log("All letters: " + allLetters);
// 使用Count方法统计列表中以'A'开头的字符串数量
var countA = names.Count(x => x.StartsWith("A"));
Debug.Log("Count A: " + countA);
// 使用Max方法获取列表中字符串长度的最大值
var maxLen = names.Max(x => x.Length);
Debug.Log("Max length: " + maxLen);
// 使用Reverse方法将列表中的元素顺序反转
names.Reverse();
Debug.Log("Reversed: " + string.Join(",", names));
// 创建一个字典
Dictionary<string, int> dict = new Dictionary<string, int>()
{
{ "apple", 5 },
{ "banana", 3 },
{ "orange", 2 }
};
// 使用Where方法筛选出字典中值大于等于3的键值对
var filteredDict = dict.Where(x => x.Value >= 3);
foreach (var item in filteredDict)
{
Debug.Log("Filtered dict: " + item.Key + " - " + item.Value);
}
// 使用OrderBy方法将字典中的键按升序排序
var sortedKeys = dict.OrderBy(x => x.Key);
foreach (var item in sortedKeys)
{
Debug.Log("Sorted keys: " + item.Key + " - " + item.Value);
}
// 使用ToDictionary方法将列表中的字符串转为字典,键为字符串,值为字符串长度
var dictFromList = names.ToDictionary(x => x, x => x.Length);
foreach (var item in dictFromList)
{
Debug.Log("Dict from list: " + item.Key + " - " + item.Value);
}
// 创建一个自定义类的列表
List<Person> people = new List<Person>()
{
new Person() { Name = "Alice", Age = 20 },
new Person() { Name = "Bob", Age = 25 },
new Person() { Name = "Charlie", Age = 30 }
};
// 使用OrderByDescending方法将列表中的元素按年龄降序排序
var sortedPeople = people.OrderByDescending(x => x.Age);
foreach (var person in sortedPeople)
{
Debug.Log("Sorted people: " + person.Name + " - " + person.Age);
}
}
// 自定义Person类
private class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
}
```
这个案例演示了如何使用LINQ库中的所有方法,包括Where、Select、OrderBy、FirstOrDefault、Any、All、Count、Max、Reverse、ToDictionary等等。在Start方法中,我们创建了一些不同类型的集合(数组、列表、字典),并对它们进行了各种操作。您可以根据自己的需求对这个案例进行修改和扩展。
阅读全文