2014-02-03 5 views

ответ

0
  1. number является int, он не реализует IEnumerable или IEnumerable<T>, так что вы не можете использовать LINQ на нем.

  2. Если вы бы коллекцию int под названием numbers вы могли бы сделать следующее:

    var results = from ans in numbers select ans < 5 ? "false" : "true" ; 
    
0

Вы можете использовать let clause, чтобы решить вашу проблему.

var number = 10; 
var result =from ans in youNumbersCollection 
     let trueFalse = (number < 5) ? "false" : "true" 
     where yourColum = trueFalse; 
0

Этот код не имеет смысла. Это не место для LINQ, которое используется для запроса списков данных. Этот код должен быть просто:

var result = number < 5 ? "true" : "false" 

содержимое «где» условие является выражением, которое вычисляется логическое значение, так же, как содержимое «если» заявление делает. Если вы пишете действительный запрос LINQ, то «где» оговорка может быть что-то вроде этого:

where number < 5 

Кроме того, вы путаете фильтрации и проекции. В разделе «где» вы определяете, включать ли элемент в обработку или нет, а предложение «select» - это место, где вы его обрабатываете. Вывод другого результата в зависимости от значения элемента - это то, что вы делаете в предложении 'select', а не в предложении 'where', например.

from item in list 
where item.IsActive 
select item.Number > 5 ? "true" : "false" 

Это будет отфильтровывать элементы в списке, где IsActive является ложным, и обрабатывать только те, где это правда. Для тех элементов, которые не отфильтрованы, он будет выводить «истина» или «ложь» на основании того, является ли число больше 5 или нет.

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