C# Linq.Select()中的多个返回语句做什么?
我看到很多select语句中都有return语句,我不知道从select语句中返回对象时会发生什么。有人能解释一下吗C# Linq.Select()中的多个返回语句做什么?,c#,linq,select,C#,Linq,Select,我看到很多select语句中都有return语句,我不知道从select语句中返回对象时会发生什么。有人能解释一下吗 var results = swimEntries .Select(se => { if (se.Tag == "DM+" || se.Tag == "DM-") { var modelEntry = modelEntries.Find(e => e.Tag == se.Tag);
var results = swimEntries
.Select(se =>
{
if (se.Tag == "DM+" || se.Tag == "DM-")
{
var modelEntry =
modelEntries.Find(e => e.Tag == se.Tag);
return modelEntry;
}
return se;
})
.ToList();
你在这里看到的是一个声明lambda。
Select()。当se.Tag
满足某些条件时,它将在modelEntries中搜索对象
您也可以将此声明编写为:
var results = new List<ModelEntry>(); // <-- i don't know the exact type.. (wild guess)
foreach(var se in swimEntries)
{
if (se.Tag == "DM+" || se.Tag == "DM-")
{
var modelEntry = modelEntries.Find(e => e.Tag == se.Tag);
results.Add(modelEntry);
}
else
results.Add(se);
}
你在这里看到的是一个声明lambda。Select()。当se.Tag
满足某些条件时,它将在modelEntries中搜索对象
您也可以将此声明编写为:
var results = new List<ModelEntry>(); // <-- i don't know the exact type.. (wild guess)
foreach(var se in swimEntries)
{
if (se.Tag == "DM+" || se.Tag == "DM-")
{
var modelEntry = modelEntries.Find(e => e.Tag == se.Tag);
results.Add(modelEntry);
}
else
results.Add(se);
}
“select语句”只是输入集合上的一个循环,对每个元素调用一个方法,然后返回从这些方法返回的对象集合。换句话说,您正在将元素对象传递给这里的方法,并且您要么得到原始元素(returnse;
),要么得到一个modelEntry
。docsA“select语句”只是输入集合上的一个循环,对每个元素调用一个方法,然后返回从这些方法返回的对象集合。换句话说,您正在将元素对象传递给这里的方法,并且您要么得到原始元素(returnse;
),要么得到一个modelEntry
。docsIf如果有人对var results=swimEntries.Select(SearchForSomething.ToList()的语法感到困惑代码>,这称为“方法组”。更传统的语法看起来像var results=swimEntries.Select(e=>SearchForSomething(e)).ToList()代码>。这些功能相当于“传统”。。。。。Select
方法接受作为委托的Func
。所以传统的方法是传递一个方法。但现在我们更倾向于写兰姆达的。不过,好补充!如果有人对var results=swimEntries.Select(SearchForSomething.ToList()的语法感到困惑代码>,这称为“方法组”。更传统的语法看起来像var results=swimEntries.Select(e=>SearchForSomething(e)).ToList()代码>。这些功能相当于“传统”。。。。。Select
方法接受作为委托的Func
。所以传统的方法是传递一个方法。但现在我们更倾向于写兰姆达的。不过,好补充!