C# 如何在没有返回值的情况下从Linq语句调用函数?
我编写了一个LINQ语句,它将枚举名列表与字典中的任何条目相匹配。然后我想调用一个函数并将匹配的字符串传递给它。我有这个,它可以工作,但有点异味,特别是必须从我的函数返回字符串C# 如何在没有返回值的情况下从Linq语句调用函数?,c#,linq,C#,Linq,我编写了一个LINQ语句,它将枚举名列表与字典中的任何条目相匹配。然后我想调用一个函数并将匹配的字符串传递给它。我有这个,它可以工作,但有点异味,特别是必须从我的函数返回字符串 var pas = Enum.GetNames(typeof(enums)) .Select(x => { return DoSomething(x); }).ToList(); 而DoSomething看起来像: private
var pas = Enum.GetNames(typeof(enums))
.Select(x => { return DoSomething(x); }).ToList();
而DoSomething看起来像:
private string DoSomething(string name)
{
// do stuff
return name;
}
可以重写它以便使函数无效吗?请尝试:
请尝试:
Linq用于选择数据,因为void没有数据,所以您不能使用它 但是有两种方法专门用于调用值列表中的函数 来自列表
Enum.GetNames(typeof(enums)).ToList().ForEach(DoSomething)
平行
Parallel.ForEach(Enum.GetNames(typeof(enums)), DoSomething)
第二个线程将使用多个线程异步执行它们Linq用于选择数据,因为void没有数据,所以您不能使用它 但是有两种方法专门用于调用值列表中的函数 来自列表
Enum.GetNames(typeof(enums)).ToList().ForEach(DoSomething)
平行
Parallel.ForEach(Enum.GetNames(typeof(enums)), DoSomething)
第二个线程将使用多个线程异步执行它们。有两种方法。如果您坚持将其放在Select中,您可以这样做:
var pas = Enum.GetNames(typeof(enums))
.Select(x => {
DoSomething(x);
return x;
}).ToList();
但以下是一种更干净的方法:
var pas = Enum.GetNames(typeof(enums)).ToList();
pas.ForEach(name => DoSomething(name));
前进的道路有两条。如果您坚持将其放在Select中,您可以这样做:
var pas = Enum.GetNames(typeof(enums))
.Select(x => {
DoSomething(x);
return x;
}).ToList();
但以下是一种更干净的方法:
var pas = Enum.GetNames(typeof(enums)).ToList();
pas.ForEach(name => DoSomething(name));
不要使用linq no使用.Select.`Enum.GetNamestypeofenums.ToList.Foreach',但是如果您只想执行一个函数,您可以在列表或并行no上调用Foreach,迭代器的整个概念就是返回一个新的迭代器,其中包含树中的链接表达式。函数必须返回一个值,该值将转换为新迭代器的值。如果要使用void函数,例如终止流,请使用ForEachI Agree with@MikeT。Select实际上是用于转换数据的。不要使用linq no使用.Select.`Enum.GetNamestypeofenums.ToList.Foreach',但是如果您只想执行一个函数,您可以在列表或并行no上调用Foreach,迭代器的整个概念就是返回一个新的迭代器,其中包含树中的链接表达式。函数必须返回一个值,该值将转换为新迭代器的值。如果要使用void函数,例如终止流,请使用ForEachI Agree with@MikeT。Select实际上是用于转换数据的。谢谢-我有这个:Enum.GetNamestypeofProductAttributeList.ToList.ForEachSetAttributethanks-我有这个:Enum.GetNamestypeofProductAttributeList.ToList.ForEachSetAttribute