在使用Linq的Select方法时,很多时候可以让我们少些一些循环遍历的代码,select方法可以对集合按照指定的条件筛选处理并最终返回一个新的集合。适用于一层循环并判断或运算等场景。
select方法的2个重载对应的委托:
Func<TSource, TResult> selector (传入泛型参数,返回泛型参数)
Func<TSource, int, TResult> selector (第二个参数为集合中的索引)
参考代码:
public static void LinqSelectMain()
{
DataList data = new();
Console.WriteLine($"ListInt-集合原始数据-{string.Join(' ', data.ListInt)}");
Console.WriteLine($"ListStr-集合原始数据-{string.Join(' ', data.ListStr)}");
{
//简单运算
var list = data.ListInt.Select(i => i > 4);
Console.WriteLine(string.Join(' ', list));
}
{
//简单运算
var list = data.ListInt.Select(i => i + 1);
Console.WriteLine(string.Join(' ', list));
}
{
//对字符串遍历并返回将元素转为大写字母的新集合
var list = data.ListStr.Select(s => s.ToUpper());
Console.WriteLine(string.Join(' ', list));
}
{
//可以在委托中完成逻辑运算并返回新的结果集合
var list = data.ListInt.Select(i =>
{
if (i > 7)
return 7;
else if (i < 3)
return 3;
else
return i;
});
Console.WriteLine(string.Join(' ', list));
}
{
//第二个重载委托中第二个参数为集合中的索引
var list = data.ListInt.Select((i, index) =>
{
if (i > 7)
return $"索引-{index}";
else if (i < 3)
return $"索引-{index}";
else
return "不输出索引";
});
Console.WriteLine(string.Join(' ', list));
}
}
输出结果: