2012-03-02 45 views
-2

我生成两个IEnumerable<int>对象:为什么IEnumerable.Except方法不返回任何元素?

var listA = model.SelectedFormats.Select(a => a.ID); //values: 1,2,4 
var listB = basket.OrderPosition.Select(x => x.BookFormatTypeID); //values: 1,4 


var result = listA.Except(listB); 

,但我不能看到从Except方法的任何结果(编译器不显示甚至认为 result是)

+2

你是什么意思“编译器甚至没有显示结果是”?你的价值是什么?你是否重复了结果 - 记得LINQ to对象使用延迟执行。 – MrKWatkins 2012-03-02 15:30:26

+0

@Tony - 听起来像你的查询导致空结果。请详细解释“编译器甚至没有显示结果是”语句。 – 2012-03-02 15:44:03

+0

在调试过程中,如果我将鼠标指针移到'result'上 - 只是没有显示 – Tony 2012-03-02 15:46:20

回答

0

IEnumerable.Except()不直接返回元素,则返回IEnumerable,您可以访问它以遍历结果。

你可以在最后一行改为

#if DEBUG 
    List<myResultType> result = new List<myResultType>(listA.Except(listB)); 
#else 
    var result = listA.Except(listB); 
#endif 

这将自动遍历元素,并将它们添加到列表,让您检查结果。

+0

你应该可以在调试器中将鼠标移到结果上并展开那里的枚举 - @Tony似乎是说这不是在他的情况下发生的。 – MrKWatkins 2012-03-02 16:08:16

相关问题