Как изменить порядок при обратной передаче для запроса LINQ to SQL - PullRequest
1 голос
/ 10 февраля 2011

У меня есть выпадающий список, настроенный на автоматическую обратную отправку, который должен возвращать список продуктов в указанном порядке. Я думал, что мог бы просто поместить этот запрос в его собственный метод и использовать параметр, чтобы указать порядок, но я не могу заставить его работать.

Вот пример:

protected void Show_Products(int item)
    {
        using (storeDataContext db = new storeDataContext())
        {
           string query = "";
            switch (item)
            {
                case 1:
                    query ="x.Name";
                    break;
                case 2:
                    query = "x.MSRP";
                    break;
                default:
                    break;
            }
            var q = db.Items.OrderBy(x=> query).Select(x => x);
            foreach(var n in q)
             {
               Do work
             }
           }
       }

И метод выпадающего списка, который вызывается при обратной передаче:

protected void ddlSortBy_SelectedIndexChanged(object sender, EventArgs e)
    {
        int value =int.Parse(ddlSortBy.SelectedValue);
        Show_Products(value);
    }

Ответы [ 3 ]

1 голос
/ 10 февраля 2011

Я взглянул на ту книгу кодов, которую кто-то связал, и знал, что есть способ сделать это. Низкий и вот, я был прав.

protected void Show_Products(int item)
{
    using (storeDataContext db = new storeDataContext())
    {
       var q = db.Items.OrderBy(x=> x.Name).Select(x => x);
        switch (item)
        {
            case 1:
                var q = db.Items.OrderBy(x=> x.Name).Select(x => x);
                break;
            case 2:
                q = db.Items.OrderBy(x => x.MSRP).Select(x => x);
                break;
            default:
                break;
        }

        foreach(var n in q)
         {
           Do work
         }
       }
   }

Я изначально установил var q для запроса на инициализацию, но это не имеет значения, потому что этому методу будет передан параметр, который изменит его.

Возможно, это не самый элегантный способ, но я думаю, что это всего лишь несколько вариантов.

1 голос
/ 10 февраля 2011
var q = from p in db.Items
        select q;

switch(item)
{
    case 1:
        q.OrderBy(x=> x.Name);
        break;
    case 2:
        q.OrderBy(x=> x.MSRP);
        break;
    default:
        break;

}

foreach(var n in q)
{
    // Do work
}
0 голосов
/ 10 февраля 2011

Извините, но вы пытаетесь использовать литералы "x.Name" и "x.MSRP" для доступа к методам ... вы не сделаете это, если не используете Reflection для получения метода и свойств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...