0

ビジネスクラスへのLINQアクセサー/APIを作成する方法に関する優れたチュートリアルを探しています。誰かが最終的にこのようなものをプログラムに入力できるように-

var potentialCustomers = from people in county
                  where people.NumberOfCats > 2
                  select people

.NetコレクションでLINQを頻繁に使用しましたが、自分のクラスでこれまで使用したことはありません。IEnumerableを実装するだけの問題ですか、それとも追加の手順が必要ですか?

4

2 に答える 2

2

LINQ は興味深い野獣です。

IEnumerable<T>LINQ について議論するとき、すぐに頭に浮かびます。LINQのようですIEnumerable<T> が、そうではありません。IEnumerable<T>は、 を実装するオブジェクトに対して LINQ クエリを記述できるようにする LINQ メソッドの 1 つの実装ですIEnumerable<T>

もう 1 つの実装はIObservable<T>、Microsoft の Reactive Extensions を強化するものです。これは、LINQ クエリをイベント (またはデータ ストリーム) に対して記述できるようにする一連の拡張機能です。とは関係ありませんIEnumerable<T>

LINQ は、オブジェクトに直接記述することもできます。拡張メソッドである必要はまったくありません。

たとえば、クラスAB次のように定義します。

public class A
{
    public B Select(Func<A, B> selector)
    {
        return selector(this);
    }
}

public class B
{
    public B(A a) { }
}

今、私はこのコードを書くことができます:

B query =
    from x in a
    select new B(x);

それは LINQ、Jim ですが、私たちが知っているようなものではありません。

すべての LINQ 演算子は、この方法で定義できます。コンパイラが正しいシグネチャを持つメソッドを認識できる限り、あなたは成功しています。

この LINQ クエリは、一連の値を操作するときに自然に感じられると言われています。したがって、これがLINQIEnumerable<T>IObservable<T>動作の良い例です。しかし、適切なメソッドを実装するだけで、好きな型に対して LINQ を定義することは確かに可能です。

于 2012-11-26T07:16:11.867 に答える
1

クラスにIEnumerable インターフェイスを実装するだけで、LINQ を使用できます。
LINQ はIEnumerableオブジェクトの拡張機能のセットであるため

于 2012-11-26T05:21:26.893 に答える