Ответ 1
LINQ для объектов для этого сценария? Вы можете сделать выбор следующим образом:
from w in words
select new
{
Word = (w.Length > 5) ? w.Substring(0, 5) : w
};
По существу,?: помогает вам решить эту проблему.
У меня есть коллекция слов, и я хочу создать коллекцию из этой коллекции, ограниченную 5 символами
Input:
Car
Collection
Limited
stackoverflow
Вывод:
car
colle
limit
stack
word.Substring(0,5) throws exception (length)
word.Take(10) тоже не очень хорошая идея...
Любые хорошие идеи?
LINQ для объектов для этого сценария? Вы можете сделать выбор следующим образом:
from w in words
select new
{
Word = (w.Length > 5) ? w.Substring(0, 5) : w
};
По существу,?: помогает вам решить эту проблему.
var words = new [] { "Car", "Collection", "Limited", "stackoverflow" };
IEnumerable<string> cropped = words.Select(word =>
word.Substring(0, Math.Min(5, word.Length)));
Что-то, что вы можете сделать,
string partialText = text.Substring(0, Math.Min(text.Length, 5));
Я считаю, что ответ, который вы искали, будет выглядеть следующим образом:
var x = new string[] {"car", "Collection", "Limited", "stackoverflow" };
var output = x.Select(word => String.Join("", word.Take(5).ToList()));
Переменная "output" содержит результат:
car
Colle
Limit
stack
и строка "автомобиль" не генерирует исключения.
Но в то время как Join и Take (5) работает, он обычно намного проще использовать, как было предложено в другом ответе,
subString = word.Substring(0,Math.Min(5,word.Length));
Последний код более удобочитаемый и легкий, хотя, конечно, есть небольшой фактор прохлады, чтобы использовать Linq для строки, чтобы взять первые пять символов, без необходимости проверять длину строки.