2013-11-28 31 views
0

我有一個LINQ表達式,其中一部分是:如何在LINQ表達式中包含條件替換?

Select(x => new SelectListItem 
      { 
       Text = x.Child.RoleName, 
       Value = x.Child.RoleName 
      }) 

我要測試的角色名,如果它包含了一定的值,則返回一個特定的字符串,即:是這樣的:

Select(x => new SelectListItem 
      { 
       Text = x.Child.RoleName.contains("Admin")?"Admin Account":"Not Admin", 
       Value = x.Child.RoleName 
      }) 

請原諒僞代碼,但如果它包含「管理員」,則返回「管理員帳戶」或其他「非管理員」爲下拉的「文本」屬性。

代碼應該是什麼樣子?

在此先感謝。

編輯

我還需要添加額外的測試,即

role.Contains("test1))? test1 : role.Contains("test2")?"Test2":role.Contains("Test3")?"Test3":"Test4" 

回答

1

如果利用在ContainsC,因爲你已經張貼它應該工作。

要解決您的其他問題,您有兩種選擇。

選項#1:堆棧:運營商是這樣的:

Text = x.Child.RoleName.Contains("Admin") ? "Admin Account" : x.Child.RoleName.Equals("Banana") ? "Banana" : "Something Else" 

選項#2:由於上述可以得到醜陋很快,你可能更喜歡邏輯分解出到一個單獨的功能。然後,你可以這樣做:

Text = CalculateText(x.Child.RoleName) 

String CalculateText(String rolename) 
{ 
    if(rolename.Contains("Admin")) 
     return "Admin Account"; 
    else if(rolename.Equals("Banana")) 
     return "Banana"; 
    else 
     return "Something Else"; 
} 
+0

我的代碼是一個quess ?? !!所以它似乎比我想象的更爲正確:) – SamJolly

+0

出於興趣,如何擴展它來模擬「else if」場景?謝謝。請參閱編輯....以我的問題 – SamJolly

+0

解決。請讓我知道你是否有進一步的問題,或者接受現在的答案。 =) –

相關問題