Использование оператора If в Linq to SQL - PullRequest
0 голосов
/ 27 октября 2011

У меня есть этот запрос:

Dim Query = From E In db.Employee Select E

Теперь внутри таблицы Employee есть логическое поле с именем «isActive».

если значение IsActive равно True, я хочу, чтобы результат показал, что IsActive равен «Active», и то же самое для IsActive = false, чтобы показать InActive при связывании с видом сетки »

Ответы [ 4 ]

1 голос
/ 27 октября 2011

Мне кажется, я понимаю, чего вы пытаетесь достичь. Вам нужно что-то вроде этого:

Dim Query = From e In db.Employee 
      select
      new
      {
       ID = e.ID,
       ActiveStr = e.IsActive?"Active":"Inactive"
      };

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

1 голос
/ 27 октября 2011
ActiveStr = e.IsActive?"Active":"Inactive" 
1 голос
/ 27 октября 2011

Если я правильно понимаю ваш вопрос, вы хотите отобразить «Активно» или «Неактивно» в виде сетки, а не «Истина» или «Ложь» в столбце IsActive?

Если это так, я вижу два разных подхода.

Вариант 1:

Вы можете выбрать новый анонимный тип и привязать его к сетке (извините, я не знаю синтаксис VB, но так будет в C #):

Dim Query = From E In db.Employee Select New With _
{ _
    .Id = E.Id, _
    .Name = E.Name, _
    .IsActive = E.IsActive ? "Active" : "Inactive" _
    ' ... all employee fields except IsActive, '
}

А потом вы просто привязываете данные, как обычно.

Вариант 2:

Вы позволяете gridview быть немного умнее, чем просто привязывать свойство IsActive. Т.е., gridview будет выполнять роль IsActive ? "Active" : "Inactive".

Например, у вас, вероятно, что-то вроде этого:

<asp:BoundField DataField="IsActive" HeaderText="IsActive" />

Вместо этого вы можете изменить это поле шаблона:

<asp:TemplateField HeaderText="IsActive">
    <ItemTemplate>
        <%# GetIsActiveText((bool)Eval("IsActive")) %>
    </ItemTemplate>
</asp:TemplateField>

В файле с выделенным кодом вы добавляете метод GetIsActiveText (), который возвращает правильную строку на основе логического значения true / false.

0 голосов
/ 27 октября 2011

Игнорировать всех, кто рекомендует условие?trueBit: синтаксис falseBit, поскольку это только C #.Для VB используйте троичный If (не IIF):

Dim query = From e In db.Employee  
            Select e.ID, 
                   ActiveStr = If(e.IsActive,"Active","Inactive")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...