Linq to sql 在Linq to SQL中使用If语句

Linq to sql 在Linq to SQL中使用If语句,linq-to-sql,Linq To Sql,我有一个疑问: Dim Query = From E In db.Employee Select E 现在在Employee表中有一个名为“isActive”的布尔字段 如果IsActive值等于True,我希望结果显示IsActive等于“Active”,并且IsActive=false在绑定到gridview时显示InActive的结果相同“如果我正确理解您的问题,您希望在gridview中显示“Active”或“InActive”,而不是在IsActive列中显示“True”或“fals

我有一个疑问:

Dim Query = From E In db.Employee Select E
现在在Employee表中有一个名为“isActive”的布尔字段


如果IsActive值等于True,我希望结果显示IsActive等于“Active”,并且IsActive=false在绑定到gridview时显示InActive的结果相同“

如果我正确理解您的问题,您希望在gridview中显示“Active”或“InActive”,而不是在IsActive列中显示“True”或“false”

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

变体1:

您可以选择一个新的匿名类型并绑定到gridview(请原谅,我不知道VB语法,但在C#中就是这样做的):

然后像往常一样进行数据绑定

变体2:

您可以让gridview比只绑定到IsActive属性稍微聪明一点。也就是说,gridview将执行
IsActive?“Active”:“Inactive”
部分

例如,您可能有以下内容:

<asp:BoundField DataField="IsActive" HeaderText="IsActive" />
Dim Query = From e In db.Employee 
      select
      new
      {
       ID = e.ID,
       ActiveStr = e.IsActive?"Active":"Inactive"
      };

您可以将其改为模板字段:

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


在代码隐藏文件中,您添加了一个方法GetIsActiveText(),该方法根据布尔值true/false返回正确的字符串。

如果我正确理解您的问题,您希望在gridview中显示“Active”或“Inactive”,而不是在IsActive列中显示“true”或“false”

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

变体1:

您可以选择一个新的匿名类型并绑定到gridview(请原谅,我不知道VB语法,但在C#中就是这样做的):

然后像往常一样进行数据绑定

变体2:

您可以让gridview比只绑定到IsActive属性稍微聪明一点。也就是说,gridview将执行
IsActive?“Active”:“Inactive”
部分

例如,您可能有以下内容:

<asp:BoundField DataField="IsActive" HeaderText="IsActive" />
Dim Query = From e In db.Employee 
      select
      new
      {
       ID = e.ID,
       ActiveStr = e.IsActive?"Active":"Inactive"
      };

您可以将其改为模板字段:

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


在代码隐藏文件中,您添加了一个方法GetIsActiveText(),该方法根据布尔值true/false返回正确的字符串。

我想我理解您试图实现的目标。您需要类似以下内容:

<asp:BoundField DataField="IsActive" HeaderText="IsActive" />
Dim Query = From e In db.Employee 
      select
      new
      {
       ID = e.ID,
       ActiveStr = e.IsActive?"Active":"Inactive"
      };

请将“ID”字段替换为您希望在查询中显示的任何其他字段,用逗号分隔。

我想我理解您试图实现的目标。您需要这样的内容:

<asp:BoundField DataField="IsActive" HeaderText="IsActive" />
Dim Query = From e In db.Employee 
      select
      new
      {
       ID = e.ID,
       ActiveStr = e.IsActive?"Active":"Inactive"
      };
ActiveStr = e.IsActive?"Active":"Inactive" 

请将“ID”字段替换为您希望在查询中显示的任何其他字段,并用逗号分隔。

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

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

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


我显然没有抓住你问题的重点。你的评论是:“如果IsActive值等于True,我希望结果显示IsActive等于“Active”,而IsActive=false在绑定到gridview时显示InActive“。你能把这些信息加到你的问题中让它更清楚吗?我显然没有抓住你问题的重点。您的评论是“如果IsActive值等于True,我希望结果显示IsActive等于“Active”,如果IsActive=false,则在绑定到gridview时显示InActive”。你能把这些信息加到你的问题里让它更清楚吗。