2010-10-05 7 views
1

Vous recherchez une requête simple pour tronquer le texte de x quantité de caractères à l'aide de Linq.tronquer le texte à l'aide de linq

+5

Veuillez donner plus de détails. Il n'est pas du tout clair quel type de troncature vous recherchez, ni quelle relation il a avec LINQ. –

Répondre

2

Vous pouvez utiliser une combinaison assez simple de Select et Substring tronquer les cordes à une certaine longueur:

var words = new List<string>(); 

// fill the list of words 

var truncated = words.Select(w => w.Substring(0, 15)); 
+0

J'ai décidé de le rendre compliqué et de convertir le mot en un tableau char, utilisez select many, puis utilisez aggregate. Le vôtre est une ligne droite. J'accepterais! – FiveTools

+0

sorry..converted en tableau char, alors j'ai utilisé take et un select, puis agrégé le résultat. – FiveTools

1
string raw = raw.ToCharArray().Take(maxLength).Select(x 
=> x.ToString()).Aggregate((current,next) 
=> current + next); 

Ce qui est plus compliquer ...

+2

Vous avez écrit * cela * plutôt que d'utiliser la méthode d'instance 'Substring' de' string'? Créatif, bien sûr, mais ... sacré saignement routier, batman. –

+0

ouais - J'avais mentionné que ... – FiveTools

6

Votre question est claire. Sur la base de votre commentaire à Justin's answer il semble que la façon plus simple de réaliser ce que vous décrivez serait la suivante:

string input = "The quick brown fox jumped over the lazy dog"; 
string result = new String(input.Take(15).ToArray()); 
Console.WriteLine(result); 

avis qu'il n'y a pas besoin d'appeler ToCharArray() depuis une chaîne implémente IEnumerable<char>. IntelliSense dans VS2008 n'apparaît pas mais les méthodes d'extension fonctionnent toujours. De même, vous pouvez utiliser le constructeur de chaîne et lui passer un tableau de caractères au lieu d'utiliser Aggregate.

+0

Une méthode d'extension est aussi une idée! Merci. – FiveTools

Questions connexes