У меня есть 2 результата запроса Linq, с которыми я хочу сделать некоторые строковые операции и объединить.Конкатенация коллекций IEnumerable C#
Результат 1, который является имена разрешенных флажков из group1, полученный
var selectedCarPosts = grpBox1MCar.Controls.OfType<CheckBox>()
.Where(c => c.Checked).OrderBy(c => c.Name).Select(c => c.Name);
, который дает результат 1:
NearMainGate
NearMP5WestGate
Результат 2, который является имена разрешенных флажков из group2, obtainedby
var selectedDtTypeCars = gbDataTypeMCars.Controls.OfType<CheckBox>()
.Where(c => c.Checked).OrderBy(c => c.Name).Select(c => c.Name);
, который дает result2:
WindDir
WindVel
Из обоих результатов хотелось бы получить каскадный список следующим образом: (Result3)
C.NearMainGate
C.NearMP5WestGate
C.WindDirNearMainGate
C.WindDirNearMP5WestGate
C.WindVelNearMainGate
C.WindVelNearMP5WestGate
Эти формы столбцов в динамическом запросе SQL позже.
У меня есть следующий код, чтобы выполнить этот шаг за шагом:
var s1 = selectedCarPosts.Select(s => "C." + s); //the first 2 items in Result3
//Now to get the rest, by inserting Result2 string in each of the first 2 items of Result3
IEnumerable<string> selCarPostsArrWithC = new string[]{};
IEnumerable<string> s2 = new string[]{};
foreach (var type in selectedDtTypeCars)
{
selCarPostsArrWithC = s1.Select(s => s.Insert(2, type));//C.WindDirNearMainGate C.WindDirNearMP5WestGate in FIRST iteration and so on
s2 = s2.Concat(selCarPostsArrWithC);// as soon as the SECOND iteration starts, the previous s2 list is overwritten with the subsequent result in selCarPostsArrWithC
}
Проблема здесь заключается в том, что во время отладки кода, я заметил, что как только я нажимаю клавишу F10 сразу после Еогеасп линии до фактически достигнув блока foreach, предыдущие значения в s2 уже перезаписаны с последующим результатом в selCarPostsArrWithC. Разъяснение ниже
Для первой итерации s2 имеет результат.
[0] "C.WindDirNearMainGate"
[1] "C.WindDirNearMP5WestGate"
В начале второй итерации перед входом внутри блока Еогеасп
s2 уже сбрасывает новые значения с WindVel некоторые, как:
[0] "C.WindVelNearMainGate"
[1] "C.WindVelNearMP5WestGate"
Пожалуйста, может любой помочь, что я Я делаю неправильно? Как я могу выполнить Result3 полужирным шрифтом, для списка IEnumerable?
Hi Cameron! wow Это было потрясающе. Большое спасибо. (Upvote требует 15 баллов, сейчас всего 7, как только я доберусь до 15, я это сделаю) Теперь я понимаю, как я новый, чтобы LINQ .. нужно узнать больше синтаксиса LINQ в дополнение к овладению C# , (возможно, вы уже поняли, что я совсем новая пчела) ;-) и ваши результаты лямбды и запроса работают как шарм. Не могли бы вы предложить хорошие книги, ресурсы для программирования LINQ и Winforms на C#? извините offtopic. – Nish
@Nish Есть ** тонны ** ресурсов. Я лично лучше всего разбираюсь в рабочем коде. [Ресурсы Linq для MSDN] (https://msdn.microsoft.com/en-us/library/bb397926.aspx) велики. Если вы хотите использовать образцы кода, Microsoft имеет [101 LInq Samples] (https: // code. msdn.microsoft.com/101-LINQ-Samples-3fb9811b), чтобы посмотреть. – Cameron
Спасибо Камерон. Имеет смысл. Да! Хороший день – Nish