1

EFモデルでRIAサービスを実行しているC#.NETSilverlight3.0クライアントがあります。クライアントに高度な検索システムを設定して、ユーザーが「フィールド(プロパティ)「Foo1」に値「Bar1」などを付けたい」と言うことができるようにしようとしています。

これに似た柔軟で動的なアプローチを使用したいと思います。問題は、IQueryableをServiceOperationパラメーターまたはドメインサービスパラメーターとして渡すことができないことです。IEこれは機能しません:

[ServiceOperation()]
public int GetFooCount(string category, IQueryable<Foo> search)
{
    int fooCount;
    if (search != null)
    {
        IQueryable<Foo> filteredFooSet = this.Context.FooSet.Intersect(search);
        fooCount = (from foo in filteredFooSet
                    where foo.Category == category
                    select foo).Count();
    }
    else
    {
        fooCount = (from foo in this.Context.ContactSet
                    where foo.Category == category
                    select foo).Count();
    }

    return fooCount;
}

このアプローチを機能させる方法または代替の(より良い)アプローチのいずれかを誰かが提案できますか?目的は、単一の特定のエンティティタイプよりも多くに適用できる柔軟な検索コントロールです。

4

1 に答える 1

1

Dynamic Linq Libraryを使用するのが最善の策だと思います。そのライブラリを使用すると、where 句を文字列として渡し、ライブラリを使用してそれを EF データに対して使用できます。

于 2009-11-11T17:39:25.153 に答える