2014-01-05 2 views
0

У меня есть очень длинный лямбда-выражениевыбрать параметр, прежде чем стрелка в лямбда

var filterDevDetailDrillDownModels = filtersQuery.Select(
      x => new FilterDevDetailDrillDownModel....... 

проблема заключается в том, что х не всегда х оно должно быть, если

(x.IsSample == 1 && x.DestFilters.FirstOrDefault() != null) 
      ? x.DestFilters.FirstOrDefault(): x, 

средств или x.DestFilters.FirstOrDefault()

или х сам и с этим параметром Я хочу построить FilterDevDetailDrillDownModel

, чтобы выполнить запрос. этот параметр, выбранный по условию, должен быть моим y, например. Можно ли выбрать параметр лямбда перед стрелкой таким образом ??? большое спасибо

ответ

0

Вы можете превратить свою коллекцию с последующими .Select вызовов, например:

filtersQuery.Select(x => x.IsSample == 1 
         ? (x.DestFilters.FirstOrDefault() ?? x) : x) 
      .Select(x => new FilterDevDetailDrillDownModel......) 

Имя параметра лямбда-не имеет никакого отношения ,

+0

СПАСИБО ПОМОЧЬ :) – user3162954

2

Нет, это не так.

Вы можете использовать метод расширения LINQ .Select(), чтобы преобразовать свою коллекцию, прежде чем применять другие операторы LINQ. Возможно, вы можете выбрать правильное значение, используя свое состояние спереди.

2

Этот параметр lambda, на который вы ссылаетесь, может быть любым, что угодно, если он не конфликтует с другим идентификатором. Это идентификатор с локальным охватом для использования в правой части выражения лямбда.

Так,

var query = SomeCollection.Where(abc => abc.Id == 1); 

эквивалентно

var query = SomeCollection.Where(helloThere => helloThere.Id == 1); 
Смежные вопросы