可能重复:
LINQ:检查数组是否为另一个数组的子集
我正在尝试确定是否有一种方法可以使用LINQ查找子集数组中的每个元素是否都在超集数组中。例如,在这个超集中:
{'w','o','k','r','d','o'}
以下是一个有效的子集:
{'o','k','w','r'}
以下内容是无效的:
{'o','k','w','r','s'}
{'w','o','k','r','d','o','s'}
实际的超集是我在内存中拥有的字符数组。 实际的子集是数据库表中的一个值。 我正在尝试使用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();
但是当我运行这个程序时,我遇到了错误:
'无法创建类型为'System.Char'的常量值。在此上下文中,只支持基元类型(例如Int32、String和Guid)。
有没有办法解决这个错误?有没有更简单的方法来实现我在这里尝试的功能?
ToCharArray()
之类的东西。 - mellamokbToCharArray()
等内容。您需要将整个单词列表加载到内存中并在那里处理它,或者实现一个更复杂的解决方案,就像我一周前偶然回答的类似问题:http://stackoverflow.com/questions/10096744/puzzle-solving-finding-all-words-within-a-larger-word-in-php/10096985#10096985 - mellamokb