2009-09-17 3 views
2

Я ищу трюк в новых dotnets, где я могу использовать встроенные функции, которые возвращают строковое значение. Вот что у меня есть:Встроенные функции в dotNet 3.0+ с C#?

var split = new[] { " " }; 
var words = SearchTextBox.Text.Trim().Split(
       split, 
       StringSplitOptions.RemoveEmptyEntries); 
var textQuery = /*inlinefunction that operates on words array and returns a string.*/ 

Я знаю, что я видел это раньше, может быть, с помощью методов цепи или анонимных функций ... Я просто не могу вспомнить, если я представлял себе все это или нет :-)

ответ

3

Вы думаете о LINQ?

var textQuery = words.Select(word => word.ToLower()); 
+0

Несколько дней я очень глупый :-) – Matt

+0

Это, однако, не возвращает строку, но «IEnumerable ». Если вам нужна одна строка, вы должны объединить приведенный выше ответ с предложением Джорена об использовании 'String.Join'. Как бы странно, что 'Join' принимает массив, кто-нибудь знает, почему он не принимает' IEnumerable' или 'IList'? – JulianR

+0

String.Join() был представлен в .NET 1.0, но generics только в .NET 2.0. –

1

Похоже, что вы думаете о LINQ к объектам, возможно, с .First() в конце, чтобы получить строку.

var textQuery = words.Where(w => w.Length > 5).First(); 

Ключ к созданию все работы являются lamdba выражение и IEnumerable<T> и это связано методы расширения. Это не ограничивается строками.

1

Чтобы получить строку из запроса (или любого другого IEnumerable), вы можете использовать String.Join. Пример:

string result = String.Join(" ", textQuery.ToArray()); 

Так использовать LINQ, как и другие ответы предполагают, чтобы работать на «словами», а затем использовать string.join рекомбинировать их в строку.