Possible Duplicate:
LINQ: Check whether an Array is a subset of another如何检查char数组是否包含另一个char数组中的每个元素?
我想确定是否有办法使用LINQ来查找子集数组中的每个元素是否在超集数组中。例如用此超集:
{'w','o','k','r','d','o'}
下面将是一个有效的子集:
{'o','k','w','r'}
虽然这些不会是有效的:
{'o','k','w','r','s'}
{'w','o','k','r','d','o','s'}
实际超集是char阵列我有记忆。实际的子集是数据库表中的一个值。我正尝试使用LINQ to EF来获取满足此条件的表中的所有值。这是我到目前为止已经试过:
char[] letterArray = letters.ToCharArray();
return we.Words.Where(t => letterArray.Join(t.Word.ToCharArray(),
f => f,
s => s, (f, s) => new { s }).Count() == t.Word.Length
).Select(t => t.Word).ToArray();
但是当我运行此我得到的错误:
'Unable to create a constant value of type 'System.Char'. Only primitive types ('such as Int32, String, and Guid') are supported in this context.'
有没有解决这个错误的方法吗?有没有更简单的方法来做我在这里尝试的?
这是因为查询错误,还是因为LINQ到EF?你在查询什么底层数据存储?这很可能不会支持诸如'ToCharArray()'等东西。 – mellamokb 2012-04-20 02:19:41
如果单词来自数组,那么你的代码实际上工作正常。问题是尝试转换为LINQ到EF的适当查询无法处理像ToCharArray()等东西。要么你需要把整个单词列表存入内存并在那里处理,或者实现一个更复杂的解决方案,就像我在一周前回答的巧合类似的问题:http://stackoverflow.com/questions/10096744/puzzle-solving-发现所有单词在一个较大的单词在PHP/10096985#10096985 – mellamokb 2012-04-20 02:27:11