2011-06-24 90 views
0

好吧我嘗試做Linq中的一個if語句,並想知道是否有可能做這樣的事情:提前LINQ查詢如果聲明

  Dim loadFriends = From p In db.UserRelationships Where p.aspnet_User.UserName = User.Identity.Name _ 
          Or p.aspnet_User1.UserName = User.Identity.Name And p.Type = 1 _ 
          Select New With {if p.aspnet_user1.user = "a certan username" then .username = _ 
              p.aspnet_user.username else .username = p.aspnet_user1.Username} 

感謝。

感謝tyrongower

這裏是查詢,如果任何人有這個相同的問題:

Dim loadFriends = From p In db.UserRelationships Where p.aspnet_User.UserName = User.Identity.Name _ 
          Or p.aspnet_User1.UserName = User.Identity.Name And p.Type = 1 _ 
          Select New With {.username = If((p.aspnet_User1.UserName = User.Identity.Name), p.aspnet_User.UserName, p.aspnet_User1.UserName)} 
+0

這取決於數據源很多。你使用Linq到SQL,Linq到對象還是其他的東西?使用的LINQ to SQL – Guffa

+0

喜guffa IM: IFF(p.aspnet_user1.user = 「一定的用戶名」,aspnet_user.username,p.aspnet_user1.Username) – Houlahan

回答

1

我不知道VB的,但在C#中是將

username = (p.aspnet_user1.user == "a certan username")? aspnet_user.username:p.aspnet_user1.Username 

我承擔將有VB.NET的三元語法

+0

的VB.NET當量是IFF語句 – avanek

+1

@avanek,更好使用IF操作符(拼寫爲只有一個I),因爲它短路,雖然在這種情況下,可能沒有太大的區別。 –

+0

@Chris Dunaway,我不知道,謝謝你的頭! – avanek