2009-12-09 2 views
0

У меня есть проблема, где, когда я бегу ниже, даже если вызов OptionsMatch возвращает ЛОЖЬ (этот метод возвращает логическое значение) Я до сих пор получить деталь в полученном списке finalItemsГде не работает в операции LINQ

public List<SavedItemOption> GetValidOrderOptions(OptionsList itemOptions, List<SavedItemOption> savedItemOptions) 
{ 
    List<SavedItemOption> finalItemOptions = savedItemOptions.Where(y => itemOptions.Any(x => OptionsMatch(x,y) && (y.actID == x.Id))).ToList(); 

    return finalItems; 
} 

ответ

4

Да, вы бы, возможно, потому что используете itemOptions.Any. Так что если есть любой x в itemOptions такой, что OptionsMatch(x, y) и y.ActID == x.ID тогда y будет в возвратном списке.

Не зная, что savedItemOptions или itemOptions есть, или в самом деле, что OptionsMatch делает, мы не можем точно сказать, что происходит, - но я думаю, что либо вы не хотите, чтобы позвонить Any, или вы сделать хотите звоните Any, но это путает вас при отладке.

+0

все, что я хочу, это если вызов OptionMatch возвращает false, не включайте этот x в список ToList. Я думал, что && потребует, чтобы обе проверки были правдой. Очевидно, это не так? – PositiveGuy

+0

Спасибо, я вижу. Я изменил его на All. – PositiveGuy

+0

Помните, что он не включает * x * в список вообще - он включает в себя * y *. Большая разница! –

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