2015-12-20 2 views
-3

Из чистого любопытства мне просто интересно, можно ли преобразовать следующий снимок в процедуру Linq? Просто любопытно, что linq способен.может быть преобразовано в запрос linq

var k = str1.IndexOf(str2.Substring(i, 1)) + str1.IndexOf(key.Substring(i, 1)); 

полное код существо:

for (int i=0;i<str2.Length;i++) 
{ 
var k = str1.IndexOf(str2.Substring(i, 1)) +  str1.IndexOf(key.Substring(i, 1)); 
if (k >= 36) {k = k - 36;} 
result += str1.Substring(k, 1); 
} 
+0

Можете ли вы представить образцы данных из переменных? ** str1 **, ** str2 ** и ** ключ **? –

+3

Да, но зачем же кому-то это нужно? Они положили оружие на голову и хотите, чтобы вы сделали это в LINQ, иначе они убьют вас? : D – dotctor

+0

переменные - это просто случайная строка без цели, они могут быть чем угодно – sean

ответ

2

Строка имеет «обработку последовательности», построенную в и код, который у вас есть работа. Даже если вы переводите его на LINQ, код выглядит примерно так же, немного хуже.

LINQ не имеет IndexOf встроенный, хотя. Вам нужно будет написать это. Substring можно эмулировать с использованием Skip и Take, но они не выполняют проверку диапазона, которая может скрыть ошибки.

Это нехороший случай для LINQ.

+0

Я знаю, что иногда лучше использовать «этот метод», а не «этот метод», но его просто любопытство, им просто интересно, может ли это на самом деле это сделать .. как это выглядит .. мне это как-то интересно – sean

+1

Конечно, я получаю это , Не стесняйтесь скопировать некоторый код IndexOf, который работает для IEnumerable где-то и использовать его в качестве эксперимента. Результат, наверное, ужасный код :) – usr

0

Linq не предназначен для создания этих запросов. Он чаще всего используется для создания запросов на общих коллекциях данных. В этом примере вы не должны использовать Linq. Лучше оставить его в том виде, который вы представили. Рекомендация: используйте StringBuilder. Подробнее здесь: http://www.dotnetperls.com/stringbuilder-performance

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