Есть строковый список со значениями "Нет", "20000", "30000", "45000", "50000", "75000"
Нужно отсеять значения, которые больше значения maxSum = 60000.
Результат должен быть такой: "Нет", "20000", "30000", "45000", "50000"
Как правильно написать linq запрос?
kek123: Ничего не делать - вернуть true. Where перебирает все члены последовательности и для каждого задает вашему предикату вопрос: "Оставим?". То есть предикат должен вернуть true для всего, кроме того, что парсится в int и больше порогового значения.
Станислав Силин: Это просто имя переменной, причём переменной, которая исспользуется "по месту", т.е. по-факту оно может быть любым и сколь-либо бессмысленным.
В вашем коде вы вольны исспользовать любые правила именования и даже дать ей какое-то осмысленное имя. Если вы подразумеваете, что такое имя что-то там подразумевает, то не исспользуйте его. Возмите "i", ведь i подразумевает integer, это будет очень академично.
Возмите "i", ведь i подразумевает integer, это будет очень академично.
C "i" совсем другая история, это может быть итератор, индекс и т.д., а вот "_" в лямбде с параметром, в академических кругах значить только одно - входой параметер не нужен для вычеслений, он игнорируется
Станислав Силин: В академических кругах - там вообще чёрт знает что твориться может, у них там своя атмосфера. :)
Идея о том, что _ - это неисспользуемая переменная(и вообще что-то показывать именем переменной) возникла для случаев, когда выражение большое и это исспользование неочеведно с первого взгляда.
Поэтому у суровых прагматичных программистов пишущих linq queries - для очевидных случаев типа нашего подходит любе имя .
И, насколько мне известно, никаких жестких требований рекомендаций от MS по поводу "_" в лямбдах не существует, поэтому вообще непонятно чего вы прицепились.
string[] input = { "Нет", "20000", "30000", "45000", "50000", "75000" }; int t; const int maxSum = 60000;
var output = (from f in input where int.TryParse(f, out t) ? t < maxSum : true select f).ToArray();