Linq占位符为列名

时间:2014-03-27 18:24:20

标签: c# asp.net-mvc linq

我必须将radioButtons的值动态地放入 Linq 查询中,以便该值将以下代码中的 customerName 替换为radioButton的值。这一切都存在于具有实体框架的MVC项目中。那么如何在Linq查询中编写占位符呢?

public ActionResult Index(string whatToSearchFor, string radioButtonValue)
{
    if (search == null)
    {
        var results = from p in db.Orders
                      select p;

        ViewBag.Orders = results;
        return View();
    }
    else
    {
        var results = from p in db.Orders
                      where values
                      where p.customerName.StartsWith(search)
                      select p;

        ViewBag.Orders = results;
        return View();
    }
}

更新以及对我有用的内容:

public ActionResult Index(string whatToSearchFor, string radioButtonValue)
{

    if(radioButtonValue == "NameOfTheRadioButton1")
    {
        var results = from p in db.Orders
                      where values
                      where p.column1.StartsWith(search)
                      select p;

        ViewBag.Orders = results;
        return View();
    }
    else if(radioButtonValue == "NameOfTheRadioButton2")
    {
        var results = from p in db.Orders
                      where values
                      where p.column2.StartsWith(search)
                      select p;

        ViewBag.Orders = results;
        return View();
    }
    else
    {
        var results = from p in db.Orders
                      select p;

        ViewBag.Orders = results;
        return View();
    }
}

1 个答案:

答案 0 :(得分:1)

您将不得不从使用查询语法切换到使用lambda语法。

Expression<Func<Order, bool>> condition = null;

if( rbFirst.Checked )
    condition = o => o.FirstThing.StartsWith( search );
else if( rbSecond.Checked )
    condition = o => o.SecondThing.StartsWith( search );
// etc...

var results = db.Orders.Where( condition );