我知道要返回一个匿名类型,我可以这样做:
var test = from c in list
where c.SomeField > 200
select new { c.SomeField, c.AnotherField };
没关系。
现在,我想现在如何使用Where方法返回这个匿名类型做同样的事情。 类似的东西:
var test = list.Where((SomeType c) => { if (c.SomeField > 200)
return new { c.SomeField, c.AnotherField } });
有没有办法使用Where方法?
谢谢!
答案 0 :(得分:7)
Where
不适用于此。 Where
期望代理人获取对象并返回bool
。因此,在Where
中返回匿名类型是不可能的,也没有意义。
您只能使用Where
过滤商品,然后使用Select
进行投影
var test = list.Where(c=> c.SomeField > 200)
.Select(c => new { c.SomeField, c.AnotherField });
顺便说一句,这是你的第一个查询的等同,因为它将被翻译成这个。
或者,如果您使用的是List<T>
,则可以使用List<T>.FindAll
方法获取与谓词匹配的所有项目。