1

Entity Framework に親子テーブルがあり、子の主キーに基づいて親から行を選択する必要があります。

私はこれらのコードを書きます:

List<int> s = (from all in DB.TbProfiles
                    where all.TbMaharat.Any(c => maharat.Contains(c.MaharatId))
                    select all.ProfileId).ToList();

しかし、Linq2Entity は「Contains」をサポートしていないことがわかりました。「MultiSet」と ESQL コマンドを使用する必要があります。しかし、これを行うためのサンプルを見つけることができます。

次のように ESQL を記述しますが、機能しません。

byte[] moshTypes = new byte[] { 1, 2, 3 };

        List<int> s =  DB.TbProfiles.Where("it.TbMaharat exists(Select 0 from TbMaharat as e where e.MaharatId IN MultiSet (" + string.Join(",", moshTypes) + "))")
            .Select(c=>c.ProfileId).ToList();

        return s;

誰でも私を助けることができますか?

4

1 に答える 1

0

メソッドを使用するには、またはIEnumerable<T>.Contains()を使用してテーブルをメモリにロードする必要があります。ただし、これは大量のメモリ コストにつながる可能性があるため、テーブルが非常に小さく、時間内に大きくならない場合を除き、使用しないでください。メソッドには回避策があります。各値の式を作成して、メソッドが になるようにします。これを行う方法については、MSDN スレッドhttp://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/095745fe-dcf0-4142-b684-b7e4a1ab59f0/を参照してください。ToList()ToArray()ContainsORContains()DB.TbMaharat.Where(x=>x.MaharatId == 1 || x.MaharatId == 2 || x.MaharatId == 3)

于 2011-11-14T12:54:55.307 に答える