Possible Duplicate:
LINQ: Check whether an Array is a subset of anotherchar配列に別のchar配列のすべての要素が含まれているかどうかを確認する方法は?
私は、サブセット、アレイ内のすべての要素は、スーパーセットの配列である場合を見つけるためにLINQを使用する方法があるかどうかを判断しようとしています。これらは有効ではないだろうが
{'o','k','w','r'}
:
{'o','k','w','r','s'}
{'w','o','k','r','d','o','s'}
実際のスーパーセットは、その文字列であり、例えば、このスーパーセットで:
{'w','o','k','r','d','o'}
以下は、有効なサブセットであろう私は覚えている。実際のサブセットは、データベーステーブルの値です。私はこの条件を満たすテーブルからすべての値を取得するためにEFにLINQを使用しようとしています。これは私がこれまでにしようとしているものです:
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 to EFのためですか?基礎となるデータストレージは何ですか? 'ToCharArray()'などのようなものをサポートしない可能性が最も高いです。 – mellamokb
単語が配列から来た場合、あなたのコードは実際にはうまくいきます。問題は、LINQ to EFの適切なクエリに変換しようとすると、 'ToCharArray()'のように処理できないということです。いずれにしても、単語リスト全体をメモリに集めて処理する必要があります。あるいは、私が一週間前に答えた偶然に似たようなもっと複雑なソリューションを実装する必要があります。http://stackoverflow.com/questions/10096744/puzzle-solving- find-all-words-within-a-larger-word-in-php/10096985#10096985 – mellamokb