-1

ADO.NET を使用して、次のようなカスタム クエリを簡単に作成できました。

SqlCommand.CommandText = "SELECT Column" + variable1 + ", Column" + Variable2 + " FROM TABLE";

それは LINQ to SQL で行うことができますか?

ありがとう

4

2 に答える 2

0

はい でそのようなことができますDynamic query with Linq
これは、カスタム クエリを作成できる例ですDynamic query with 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();

詳細については、このページを確認してください。

于 2018-08-01T14:08:18.153 に答える
0

いいえ、動的クエリを作成する一般的な方法はありません。

メソッドには、既知の特定の戻り値の型が必要です。その型は System.Object にすることができますが、実際にメンバーを取得するには、多くの見苦しいリフレクション コードを使用する必要があります。また、この場合、戻り値を生成するために、醜いリフレクション式ツリー コードを大量に使用する必要があります。

UI 側で列を動的に生成しようとしている場合は、それをやめてください。設計時に列を定義してから、実際に必要な/ユーザーに表示したい列を表示/非表示にします。クエリで、表示される可能性のあるすべての列を返すようにします。

すべてのデータ列を選択する重大なパフォーマンスの問題に気付いていない限り (その場合、おそらくデータベース レベルでインデックスの問題をカバーしていない可能性があります)、このアプローチの方がはるかに優れています。述語とソート順を動的に生成することはまったく問題ありませんが、実際には出力リストでこれを行いたくありません。 これについての詳細

于 2012-05-29T14:25:20.887 に答える