2016-10-21 6 views
1

Возможно ли использовать вариант abc без вызова Convert дважды? Я имею в виду, как def, но без второго?LINQ: Где выбрать результат?

Что-то вроде:

var desired = (from x in AnswerRecords 
       select Converter(x) as bla 
       where bla != null 
       ).ToList(); 
+1

Как 95% от содержания этого вопроса не имеет ничего * * делать с тем, что вы просите. Вы не должны включать большое количество совершенно ненужного кода. – Servy

ответ

3

Ваш случай подходит именно для использования ключевого слова let.

Используйте его для хранения результата Converter, а затем проверить его:

var result = from item in AnswerRecords 
      let converted = Converter(item) 
      where converted != null 
      select converted; 
0

При использовании цепного синтаксиса вызова метода вы можете легко цепные звонки ...

AnswerRecords.Select(x => Converter(x)).Where(x => x != null).ToList(); 

И еще короче:

AnswerRecords.Select(Converter).Where(x => x != null).ToList(); 

Редактировать :

var desired = (
     from y in (
      from x in AnswerRecords 
      select Converter(x) 
     ) 
     where y != null 
     select y 
    ).ToList(); 
+0

Нет, мне нужен linq-код, не привязанный к вызову метода sql-стиля. – User1

+0

@ User1 Отредактировано ... но это не более читаемо ИМХО. – Lucero

+0

вот что у меня уже есть. Я собираюсь согласиться (из x в AnswerRecords выберите Converter (x)). Где (x => x! = Null) .ToList(); – User1

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