2014-02-04 5 views
1

Если более лаконичный способ написания такого рода заявления:если заявление стенография

if (!string.IsNullOrEmpty(c1)) 
{ 
    var _individual = new Individual { Age = Convert.ToInt32(c1) }; 
    request.Individuals.Add(_individual); 
} 

if (!string.IsNullOrEmpty(c2)) 
{ 
    var _individual = new Individual { Age = Convert.ToInt32(c2) }; 
    request.Individuals.Add(_individual); 
} 

if (!string.IsNullOrEmpty(c3)) 
{ 
    var _individual = new Individual { Age = Convert.ToInt32(c3) }; 
    request.Individuals.Add(_individual); 
} 

if (!string.IsNullOrEmpty(c4)) 
{ 
    var _individual = new Individual { Age = Convert.ToInt32(c4) }; 
    request.Individuals.Add(_individual); 
} 

if (!string.IsNullOrEmpty(c5)) 
{ 
    var _individual = new Individual { Age = Convert.ToInt32(c5) }; 
    request.Individuals.Add(_individual); 
} 
+0

Вы всегда можете добавить значения в массив и написать цикл. – Nabren

+0

Тот факт, что строка содержит значение, не означает, что это значение представляет собой целое число. Возможно, вам стоит подумать об использовании Int32.TryParse. – jmcilhinney

ответ

7
foreach (var c in new[] {c1, c2, c3, c4, c5}) 
{ 
    if (!string.IsNullOrEmpty(c)) 
    { 
    var _individual = new Individual { Age = Convert.ToInt32(c) }; 
    request.Individuals.Add(_individual); 
    } 
} 
10

Конечно! Написать метод:

private void AddIfAgeValid(string age) 
{  
    if (!string.IsNullOrEmpty(age)) 
    { 
     var _individual = new Individual { Age = Convert.ToInt32(age) }; 
     request.Individuals.Add(_individual); 
    } 
} 

Тогда просто назвать его:

AddIfAgeValid(c1); 
AddIfAgeValid(c2); 
AddIfAgeValid(c3); 
// .. 

Вы, возможно, придется пройти в request, а также, не уверен, где вы объявили его.

Вам также может понравиться использование массива или List<string> для хранения ваших возрастов, а не c1, c2, c3, .. переменных.

+1

избили меня 2 его. Это тем лучше, что петли, на мой взгляд. – Tony

7
foreach (var x in (new[] { c1, c2, c3, c4, c5 }).Where(x => !string.IsNullOrEmpty(x))) 
    request.Individuals.Add(new Individual { Age = Convert.ToInt32(x) }); 

Или один вкладыш, если только Individuals поддерживает AddRange:

request.Individuals.AddRange((new[] { c1, c2, c3, c4, c5 }).Where(x => !string.IsNullOrEmpty(x)).Select(x => new Individual { Age = Convert.ToInt32(x) })); 

Но я бы не стал заходить так далеко. Это гораздо менее читаемо, чем foreach.

+3

Не уверен, что сложные заявления Linq - лучшее направление, когда они пытаются изучить C#. – Tony

+1

Что заставляет вас думать, что OP пытается научиться C#? Я вижу пару вопросов LINQ, которые он задавал раньше. – MarcinJuraszek

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