C# LINQ到SQL自定义查询生成器

C# LINQ到SQL自定义查询生成器,c#,.net,linq-to-sql,C#,.net,Linq To Sql,使用ADO.NET很容易构建如下自定义查询: SqlCommand.CommandText = "SELECT Column" + variable1 + ", Column" + Variable2 + " FROM TABLE"; 在LINQtoSQL中可以这样做吗 谢谢没有构建动态查询的常用方法 方法必须具有已知的特定返回类型。那种类型可以是 但是你必须使用很多丑陋的反射代码 为了真正得到会员。在这种情况下,您还必须使用 大量丑陋的反射表达式树代码来生成返回 价值观 如果您试图在UI端动

使用ADO.NET很容易构建如下自定义查询:

SqlCommand.CommandText = "SELECT Column" + variable1 + ", Column" + Variable2 + " FROM TABLE";
在LINQtoSQL中可以这样做吗


谢谢

没有构建动态查询的常用方法

方法必须具有已知的特定返回类型。那种类型可以是 但是你必须使用很多丑陋的反射代码 为了真正得到会员。在这种情况下,您还必须使用 大量丑陋的反射表达式树代码来生成返回 价值观

如果您试图在UI端动态生成列- 别这样。在设计时定义列,然后 显示/隐藏用户实际需要/希望看到的列。有 查询返回所有可能可见的列

除非您注意到严重的性能问题,否则选择所有 数据列(在这种情况下,您可能有非覆盖索引 数据库级别的问题)则使用 这是一种方法。生成谓词和排序是非常好的 动态订购,但您确实不想使用 输出列表。


是的,您可以使用Linq的
动态查询执行类似操作
这是一个示例,您可以使用
动态查询和Linq构建自定义查询:

string strWhere = string.Empty;
    string strOrderBy = string.Empty;

    if (!string.IsNullOrEmpty(txtAddress.Text))
        strWhere = "Address.StartsWith(\"" + txtAddress.Text + "\")";  
    if (!string.IsNullOrEmpty(txtEmpId.Text))
    {
        if(!string.IsNullOrEmpty(strWhere ))
            strWhere = " And ";
        strWhere = "Id = " + txtEmpId.Text;
    }
    if (!string.IsNullOrEmpty(txtDesc.Text))
    {
        if (!string.IsNullOrEmpty(strWhere))
            strWhere = " And ";
        strWhere = "Desc.StartsWith(\"" + txtDesc.Text + "\")";
    }
    if (!string.IsNullOrEmpty(txtName.Text))
    {
        if (!string.IsNullOrEmpty(strWhere))
            strWhere = " And ";
        strWhere = "Name.StartsWith(\"" + txtName.Text + "\")";
    }

    EmployeeDataContext edb = new EmployeeDataContext();
    var emp = edb.Employees.Where(strWhere);
    grdEmployee.DataSource = emp.ToList();
    grdEmployee.DataBind();

有关更多信息,请参见第页。

在我们帮助您之前,您需要向我们提供一个更好的示例,说明如何使用它。您是用ADO.NET以这种方式构建查询的吗?我的意思是将字符串与值连接起来?
stringvariable1=“a”;删除表用户;从userinfo中选择*,其中“t”=“t”
@OskarKjellin我知道如果变量来自UI,人们可以进行注入附加,但我的变量不是。这里没有动态,只是字符串连接。字符串恰好用于动态LINQ,但这并不能使字符串构建本身成为动态的。此外,不要在查询字符串中使用参数,您会一直覆盖
strWhere
,因此不能有多个谓词。这是一个非常糟糕的答案。