#linq-to-sql
#linq-to-sql
Вопрос:
У меня есть этот запрос:
Dim Query = From E In db.Employee Select E
Теперь внутри таблицы Employee есть логическое поле под названием «isActive».
если значение isActive равно True, я хочу, чтобы результат показывал, что isActive равно «Active», и то же самое для isActive=false, чтобы показывать неактивный при привязке к gridview »
Комментарии:
1. Я явно пропустил суть вашего вопроса. Ваш комментарий был «если значение isActive равно True, я хочу, чтобы результат показывал, что значение isActive равно «Active», и то же самое для isActive=false, чтобы показывать неактивный при привязке к gridview». Можете ли вы добавить эту информацию в свой вопрос, чтобы сделать его более понятным.
Ответ №1:
Если я правильно понял ваш вопрос, вы хотите отобразить «Активный» или «Неактивный» в вашем gridview, а не «True» или «False» в столбце isActive?
Если это так, я вижу два разных подхода.
Вариант 1:
Вы можете выбрать новый анонимный тип и привязаться к gridview (простите, я не знаю синтаксиса 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 .
Ответ №2:
ActiveStr = e.IsActive?"Active":"Inactive"
Ответ №3:
Мне кажется, я понимаю, чего вы пытаетесь достичь. Вам нужно что-то вроде этого:
Dim Query = From e In db.Employee
select
new
{
ID = e.ID,
ActiveStr = e.IsActive?"Active":"Inactive"
};
Пожалуйста, замените поле «ИДЕНТИФИКАТОР» любыми другими полями, которые вы, возможно, пожелаете показать в запросе, разделенными запятыми.
Ответ №4:
Игнорировать всех , кто рекомендует это условие ? trueBit: синтаксис falseBit, поскольку это только C #. Для VB используйте троичный If (не IIF):
Dim query = From e In db.Employee
Select e.ID,
ActiveStr = If(e.IsActive,"Active","Inactive")