0

私はこの構造を持っています:

class Foo {
    IList<FooAttribute> Attributes { get; set; }
}

class FooAttribute {
    bool IsSelected { get; set; }
    string Value { get; set; }
}

そして、私は次のようなオブジェクトを持っています:

IQuerable<Foo> foos; // Database repository object .AsQuerable()
IList<FooAttribute> attrs;

attrsリストのすべての属性を持つfoosのアイテムのみをフィルタリングする必要があります。私はこれを試しました:

foos = foos.Where(foo =>
                  attrs.All(a =>
                      foo.Attributes.Any(at => at.Value == a)));
var filteredFoos = foos.ToList();

うまくいくと思いますが、非常に遅くなり... NotSupportedExceptionがスローされます...

ちなみに… ASP.NET MVC 3 と C# 4.0 を使っているので、最新のソリューションでも大歓迎です。

前もって感謝します。

4

1 に答える 1

1
FooAttribute fooAttributeAlias=null;
Session.QueryOver<Foo>().Inner.JoinAlias(x=>x.Attributes,()=>fooAttributeAlias)
.WhereRestrictionOn(()=>fooAttributeAlias).IsNotEmpty
.List();

あなたが書いた質問を理解できませんでした。上記のクエリが期待どおりに機能するかどうかはわかりません。生成された sql を見て、それが正しいかどうかを確認してください。また、正しい結果が得られると予想されるSQLクエリも役立ちます。

于 2012-04-13T08:36:24.723 に答える