【发布时间】:2014-01-10 00:11:45
【问题描述】:
我有静态类中的对象列表。类似的东西:
public static class ClassOfItems
{
private static List<Item> ListOfItems = new List<Item>();
public static List<Item> GetAll()
{
return ListOfItems;
}
}
public class Item
{
public int id{get; set;}
public string name{get;set:}
}
我从 XML 文件初始化项目。直到那一刻一切都好。例如,我的静态类中有两个项目:
item1:
id=1
name="item1"
item2:
id=2
name="item2"
现在我想选择 id 值大于 0 的项目(例如):
1 方式:
var items=from i in ClassOfItems.GetAll()
where i.id>0
select i;
2路:
var items=ClassOfItems.GetAll().Where(i => i.id>0);
他们都没有工作:(
我刚刚注意到,当我使用返回单个对象的方法时,它正在工作。例如:
var items=ClassOfItems.GetAll().First(i => i==1);//it's working
var items=ClassOfItems.GetAll().Where(i=> i==1);//not working ;(
哈哈解决了 对不起,伙计们:D 只需要使用 ToList() 方法即可。
var items=(ClassOfItems.GetAll().Where(i => i.id>0)).ToList();
【问题讨论】:
-
请解释您所说的“不工作”是什么意思。是否抛出异常?当您期待两个结果时,您是否只看到一个结果?
-
我期待超过 1 个结果,但我得到空值:oi40.tinypic.com/2hp6t08.jpg 我正在使用 Where 方法
-
@TomaszDev,你的 where 方法从一开始就有效。只是你没有用 foreach 尝试它,你认为它不起作用。
-
是的。我失去了一个多小时才注意到......
标签: c# linq windows-phone-7 select lambda