2011-02-24 45 views
4

我有一个自定义类型MyType,函数MyBoolFunction(string)返回true或false。Lambda语法:函数在参数范围内具有特定值的元素

我有一个大的列表MyType对象MyTypeList

我有一个字符串对象列表StringList

我想获得的MyTypeList的子集,其中myTypeList.MyBoolFunction(arg)是真的超过StringListargarg范围内至少有一个值。

我想我应该可以用C#lambda表达式来做到这一点。

我想是这样的(伪)

MyTypeList.Where(x => (x.MyBoolFunction(arg)==true for some arg in StringList); 

这可能吗?我怎样才能做到这一点?

+0

哇,看起来l我们很多人都一次都在打相同的东西!卫生署! – 2011-02-24 20:48:02

回答

8

尝试使用Enumerable.Any

var query = MyTypeList.Where(x => StringList.Any(arg => x.MyBoolFunction(arg))); 
3
MyTypeList.Where(x => StringList.Any(s => x.MyBoolFunction(s))); 

对于一些清晰,sStringListx一个条目在MyTypeList

1

条目不知道你的实际类型,我会说:

MyTypeList.Where(x => StringList.Any(arg => x.MyBoolFunction(arg)); 
+1

我认为你需要一个更接近的括号。 – 2011-02-24 20:50:08

+1

强制XKCD:http://www.xkcd.com/859/ – 2011-02-24 21:00:17