C# LINQ之前的遗留集合查询
我想介绍一下LINQ,并想谈谈查询集合过去是如何工作的。回到.NET1.1,我似乎记得有一个方法(Find()也许?),在这个方法中,您将传递另一个方法的地址,该方法将询问集合中的每个项,并确定它是否应包含在过滤的集合中 我完全记错了吗?它一直困扰着我,因为语法在当时是不寻常的 我以为是这样的:C# LINQ之前的遗留集合查询,c#,.net,C#,.net,我想介绍一下LINQ,并想谈谈查询集合过去是如何工作的。回到.NET1.1,我似乎记得有一个方法(Find()也许?),在这个方法中,您将传递另一个方法的地址,该方法将询问集合中的每个项,并确定它是否应包含在过滤的集合中 我完全记错了吗?它一直困扰着我,因为语法在当时是不寻常的 我以为是这样的: public bool ContainsFoo(string term){ if(term.contains("Foo"){ return true; } retu
public bool ContainsFoo(string term){
if(term.contains("Foo"){
return true;
}
return false;
}
你可以这样称呼它:
filteredCollection = collection.Find(ContainsFoo);
我似乎记得很多人评论LINQ是如何更快地编写代码的,因为开发人员现在可以在线编写函数了。我们以前是如何编写函数“outline”的?在LINQ之前,您仅限于所有内置的
列表方法,yes是其中之一(现在仍然是)。区别在于它需要一个谓词
,而不是一个函数
,您仍然可以内联执行该函数,例如
var found = list.Find(delegate(Item item) { return item != null; });
或者,正如您使用命名方法所演示的那样。只是对集合进行迭代,我相信这就是您所要寻找的:您可能正在考虑的,这需要一个谓词。在lambda表达式(“函数内联”)之前,您可以传递给这样的方法。在泛型之前有什么方法可以这样做吗?也许我对.Net一代的理解是错误的,直到第2代才出现。0@ChrisHardie是的,我的回答提到了列表
,但同样的方法也适用于列表
,我已经对其进行了更新,以澄清这一点。我将在单独的回答中发布这一点,但将在此处提及;MSDN文档列表(T)。请在此处查找: