首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在NLua中使用LINQ?

是否可以在NLua中使用LINQ?
EN

Stack Overflow用户
提问于 2013-12-02 20:38:59
回答 1查看 1.1K关注 0票数 1

我想知道是否可以在NLua中使用LINQ?我已经搜索了各种来源,包括项目的github页面,但没有任何运气。我得到了以下最小的C#示例:

代码语言:javascript
复制
using (var lua = new Lua())
{
    lua.LoadCLRPackage();
    lua["data"] = new[] { 1, 2, 3, 4, 5 };
    var res = lua.DoFile(@"C:\..\MyLua.lua");
}

MyLua.lua看起来是这样的:

代码语言:javascript
复制
luanet.import_type('System.Linq')

-- syntax error near 'in'
res = from d in data where d > 2 select d

-- ')' expected near '='
res = data:Where(x => x > 2)

return res

执行时,语法错误(在上面的lua脚本中显示为注释)由NLua返回。很高兴知道这是否是设计出来的,如果是的话,未来版本的NLua是否会支持LINQ?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-04 03:03:33

LINQ是一个“语言集成查询”:在这里集成是关键,即C#语法支持符合LINQ语法和语义的结构。

NLua不改变Lua的语法(更不用说语义),它只是使.NET库可以从Lua获得,使从C#运行Lua脚本变得更容易,并且使两种语言之间的数据交换更加容易。那么,NLua中不支持LINQ查询是出于设计原因吗?嗯,算是吧!在这个设计中,NLua不改变或扩展Lua语法。

将来的版本会支持它吗?嗯,任何未来都是一段很长的时间,谁能预测未来呢?即使当前的维护人员拒绝,他们也可以决定在几个月内放弃这个项目,让另一个开发人员接管它,他认为这将是一个好主意。所以你问题的那一部分没有答案。

因此,尽管如此,答案仍然是肯定的,您可以使用LINQ :在发布到Lua的C#函数中创建LINQ查询,然后从Lua调用它们。诚然,这并不坏,但仍然没有您想要做的那样强大,这就是在不需要编译C#代码的情况下在Lua代码中创建LINQ。我认为这是不可能的,虽然我隐约记得有一种方法可以动态编译C#代码,但我可能在做梦。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20337376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档