C# - 将linq查询转换为可移植类中的SQL语句

时间:2017-04-08 20:06:41

标签: c# sql linq

我想创建一个支持多平台的移动类库(Mobile,Desktop,Web) 这个库将使用Rest API(ASP API)..我想要的是在可移植类中编写LINQ语句然后将其转换为SQL语句作为字符串然后将其发送到Web服务 我发现的是IQToolkit,但它需要一个数据库提供程序来生成SQL语句..所以有什么想法可以做到这一点吗?

更新

我的工作是:

private IEnumerable<MemberExpression> DevideExpressions(Expression condition)
    {
        var candidates = new Queue<Expression>(new[] { condition });


        while (candidates.Count > 0)
        {
            var expr = candidates.Dequeue();
            if (expr is MemberExpression)
            {
                yield return ((MemberExpression)expr);
            }
            else if (expr is UnaryExpression)
            {

                candidates.Enqueue(((UnaryExpression)expr).Operand);
            }
            else if (expr is BinaryExpression)
            {
                var binary = expr as BinaryExpression;
                candidates.Enqueue(binary.Left);
                candidates.Enqueue(binary.Right);

            }
            else if (expr is MethodCallExpression)
            {
                var method = expr as MethodCallExpression;
                foreach (var argument in method.Arguments)
                {
                    candidates.Enqueue(argument);


                }
            }
            else if (expr is LambdaExpression)
            {
                candidates.Enqueue(((LambdaExpression)expr).Body);

            }
        }

    }

所以有两种情况: 1-代码如下:

var result = MyDb.Select<Users>(f=> f.UserName == "my name");

它给我字符串结果: &#34; UserName = \&#34;我的名字\&#34;&#34; 所以我可以轻松地将它处理到SQL

2-代码如下:

string name = "my name";
var result = MyDb.Select<Users>(f=> f.UserName == name);

它给我字符串结果:    &#34; UserName = value(DbEntityWpf.MainWindow).name&#34;

所以我想在运行时将()的值作为字符串获取的主要问题..如果发生这种情况,那么每件事都可以。

0 个答案:

没有答案