私には解決できない小さな問題があります。Linq で SQL-In-Statement を使用したいと考えています。私はこのフォーラムと他のフォーラムで、.Contains を使用する必要があることを読みました (逆の考え方の表記を使用:-))。入力として、Guid のリストがあります。最初にそれらを配列にコピーしてから、そのようなことをしました:
datatoget = (from p in objectContext.MyDataSet
where ArrayToSearch.Contains(p.Subtable.Id.ToString())
select p).ToList();
datatoget は、Subtable.Id (Guid) に一致するすべてのレコードを格納する必要がある結果です。Subtable は MyData の Detail-Table であり、Id は Guid-Type です。私はいくつかのことを試しました(GuidをStringに変換してから.Containsを使用するなど)が、常に次のような例外が発生します:
「Linq to Entities」はメソッド「Boolean Contains(System.Guid)」を認識せず、このメソッドをメモリ式に変換できません。(私はVS2008のドイツ語版を使用しているため、そのようなものです)
.NET 3.5 で L2E を使用しており、VS 2008 で C# でプログラミングしています。
いくつかの例を読みましたが、うまくいきません。おそらく、文字列の代わりに Guid を使用しているためでしょうか? また、独自の比較関数を作成しようとしましたが、.NET が比較のために関数を呼び出すように統合する方法がわかりません。