2011-10-27 49 views
0

我有这个疑问:使用如果Linq中的语句SQL

Dim Query = From E In db.Employee Select E 

现在Employee表有一个名为“isActive”一个布尔字段内。

如果IsActive值等于为True我想要的结果表明,IsActive等于“活动”与同为IsActive =假绑定到GridView”

+0

我明显错过了你的问题的观点。您的评论是“如果IsActive值等于True,我希望结果显示IsActive等于”Active“,并且相同的IsActive = false在绑定到gridview时显示InActive”。你能否将这些信息添加到你的问题中以使其更清楚。 – ChrisF

回答

1

如果我正确理解你的问题时显示无效的,要在IsActive列,以显示你的GridView“激活”或“无效”,而不是“真”或“假”?

如果是的话,我可以看到两种不同的方法。

变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 ()根据布尔真/假值返回正确的字符串。

1

我想我明白你想达到的目标。你需要的东西是这样的:

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

请与任何其他领域,你可能希望在查询中,用逗号分隔,显示更换“ID”字段。

1
ActiveStr = e.IsActive?"Active":"Inactive" 
0

忽略所有人推荐的条件? trueBit:falseBit语法,因为它只是C#。对于VB,使用三元如果(不是IIF):

Dim query = From e In db.Employee 
      Select e.ID, 
        ActiveStr = If(e.IsActive,"Active","Inactive")