2013-11-28 3 views
0

У меня есть выражение LINQ, часть из которых является:Как включить условное замещение в выражении LINQ?

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

Я хочу, чтобы проверить RoleName и, если он содержит определенное значение, то возвращает определенную строку, а именно: что-то вроде:

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

Пожалуйста, извините псевдокод, но если он содержит «Администратор», верните «Admin Account» еще «Not Admin» для атрибута «Текст» выпадающего списка.

Какой код должен выглядеть?

Заранее спасибо.

EDIT

Я также необходимо добавить дополнительные тесты, т.е.

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

ответ

1

Если вы заглавной C в Contains, который должен работать, как вы разместили ее.

Чтобы задать свой дополнительный вопрос, у вас есть два варианта.

Вариант № 1: Stack: операторы, как это:

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

Из интереса, как бы это расширить, чтобы эмулировать сценарий «еще если»? Благодарю. См. Правка .... на мой вопрос – SamJolly

+0

Адрес. Пожалуйста, дайте мне знать, если у вас есть дополнительные вопросы или принять ответ как есть. =) –

Смежные вопросы