Динамическое добавление полей выбора с помощью LINQ lambda - PullRequest
1 голос
/ 17 августа 2010

Допустим, у нас есть выражение:

var prices = from p in PriceDB.Prices
             where p.TypeID == 12
             orderby p.PriceType.Title
             select p;

Можно ли изменить список выбора?

Я думаю, это выглядит примерно так:

var newPriceList = prices.Select( p => p.ExchangeRate );

Это может быть странный запрос, но в моем коде (который слишком длинный и сложный для публикации здесь) я хочу условно добавить поля для вывода в зависимости от CheckBoxList.

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

Ответы [ 4 ]

1 голос
/ 17 августа 2010

Я представляю, что это выглядит примерно так:

На самом деле это будет выглядеть именно так.Сначала создайте запрос, выделив всю запись.Затем добавьте select (использование метода Select () кажется самым простым способом), чтобы ограничить выбор.Linq-to-Sql отсортирует два выбора и будет использовать соответствующий повторный выбор, поэтому в конечном SQL будет только один выбор.

Нет действительно хорошего способа выбора между несколькими выборами.Я бы, наверное, использовал переключатель / чехол.

0 голосов
/ 17 августа 2010

Хотя вы могли бы идти по динамическому маршруту, я бы настоятельно рекомендовал не делать этого.Какова стоимость получения дополнительных значений, если они вам не нужны, в вашем конкретном случае?Проблема в том, что они отображаются динамически, и вы хотите, чтобы они отображались только в определенных случаях?Если это так, я бы предложил как-то изменить код дисплея.

Трудно оставаться строго типизированным (что имеет различные преимущества), в то же время будучи динамичным с точки зрения того, что вы выбираете.Конечно, если вы всегда хотите получать одну и ту же «форму» данных (например, всегда просто значение decimal из каждой строки), то это достаточно просто - дайте мне знать, если вы хотите, чтобы это продемонстрировали.

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

0 голосов
/ 17 августа 2010

Если я вас правильно понял, это объясняет, как создавать динамические запросы:

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

0 голосов
/ 17 августа 2010
...