LINQ in win32 DELPHI

时间:2009-01-03 23:55:19

标签: linq delphi winapi

是否可以在win32 DELPHI应用程序中使用LINQ

3 个答案:

答案 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的表达式。