2011-10-27 88 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")