C# LINQ到SQL自定义查询生成器
使用ADO.NET很容易构建如下自定义查询: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端动
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
,因此不能有多个谓词。这是一个非常糟糕的答案。