是否可以在win32 DELPHI应用程序中使用LINQ
答案 0 :(得分:16)
Delphi 2009具有泛型,类助手和匿名方法支持,但 lambda ,扩展方法或类型推断。 Lambda表达式可能会出现在Delphi的未来版本中,但它们尚未出现在官方路线图上(很快就会出现一个新版本)。 Delphi for Win32也无法访问所有LINQ库。
所以简短的回答是NO,你不能在Win32 Delphi中做LINQ。你可以做一些类似的事情,从技术上讲你甚至可以通过COM访问LINQ(就像你可以使用任何.NET类一样),但如果没有酷的LINQ语法,它就会失败。
LINQ实际上是一种.NET技术。虽然Delphi很可能会开发使LINQ成为可能的语言功能,但底层.NET库仅适用于.NET开发。
我建议使用RemObject Data Abstract或类似的。
答案 1 :(得分:3)
是和否.NINQ可以被认为是两个不同的项目。
第一种是类似SQL的查询语法。这是允许您在C#中编写以下内容的原因。
var query = from it in "foobar" select Char.ToUpper(it);
对于delphi使用此版本的LINQ,它需要添加显式语法支持。 AFAIK这不存在。
尽管如此,所有LINQ查询都会转换为一组查询表达式。这些通常涉及大量使用lambda表达式和闭包。上面的代码等同于以下非SQL语法版本。
var query = "foobar".Select(x => Char.ToUpper(x));
我不知道Delphi中lambda或委托支持的级别,但是应该可以从Delphi中访问此方法中的LINQ。
答案 2 :(得分:1)
我不知道它出现在哪个版本的Delphi中,但在XE中我们有'对象函数'可以作为闭包或接近相等的lambda表达式。
因此,截至今天(26/06/2011), near 可能在Delphi(第二种形式)中有类似LINQ的表达式。