-3

以下は、私が見ていたコードの一部です。コードの IEnumerable 部分がわかりません。誰かが各行の意味を教えてくれませんか. ありがとう

Where(u =>) が他よりもよくわかりません。

  public static List<AAlexUsers.Models.SearchClass> Users(string userId, string email, string lastFourdigits)   
    {
        SearchClass Alex = new SearchClass();
        Alex.userId = "1234";
        Alex.email = "Alex@gmail.com";
        Alex.lastFourdigits = "1885";

        SearchClass Emilio = new SearchClass();
        Emilio.userId = "0928";
        Emilio.email = "Cubano@gmail.com";
        Emilio.lastFourdigits = "0706";

        SearchClass Ulysses = new SearchClass();
        Ulysses.userId = "0914";
        Ulysses.email = "lysses@gmail.com";
        Ulysses.lastFourdigits = "01zx";

        var list = new List<SearchClass>();
        list.Add(Alex);
        list.Add(Emilio);
        list.Add(Ulysses);

        IEnumerable<SearchClass> result = list;
         if (!string.IsNullOrEmpty(userId))
            result = result.Where(u => u.userId == userId);
        if (!string.IsNullOrEmpty(email))
            result = result.Where(u => u.email == email);
        if (!string.IsNullOrEmpty(lastFourdigits))
            result = result.Where(u => u.lastFourdigits == lastFourdigits);


        return list.ToList();

    }
4

3 に答える 3

2

を含む LINQ メソッドの多くは、Where遅延実行を使用します。この場合、IEnumerable を実際の結果セットではなく、クエリと考えることができます。Where実際には何もしていないステートメントを追加することで、クエリに追加のフィルターを追加するだけで、後で実際にシーケンスを評価するとき (この場合はToListが呼び出されたとき)、それらのフィルターはすべて適用されます。

このコードが言っていることは、 が指定されている場合、データにフィルターを追加して、その変数に一致するuserIdアイテムのみが含まれるようにすることです。userIdと に対しても同じことが行われemailますlastFourdigits

于 2012-09-26T14:06:36.480 に答える
1

これはLinq、(場所、選択など)

=>これはラムダ式です

IEnumerableは、.Net で反復可能なすべてのもののインターフェイスです。

詳細については、すべての部分をグーグルで検索できます

于 2012-09-26T14:12:13.633 に答える
1

IEnumerable は SearchClass オブジェクトのコレクションです。リストや配列のようなものとして見てください。

IEnumerable は、列挙できるものを記述するジェネリック インターフェイスです (それを反復処理して、そのすべての要素を表示/取得できます)。この IEnumerable のコンテンツは、事前に生成されているか、「結果」(IEnumerable) を反復処理しようとするとライブ/遅延生成されます。

次の行は、この「結果」リストに対して実行されるクエリです。

result = result.Where(u => u.userId == userId);

クエリの戻り値をクエリが実行されるデータに割り当てるため、混乱する可能性があります。もっと簡単な例を見てみましょう:

var myResult= myEnumerableList.Where(u => u.userId == "Yusuf");

「var myResult」は、この要素 (ここでは「u」と呼ばれる) が「Yusuf」と等しいプロパティ userId を持っている場合にのみ、myEnumerableList のすべての要素を含むことを意味します。

.Net は、コレクション/リスト/anything_enumerable をクエリするための強力な方法を提供し、SQL に似た構文で提示されます

于 2012-09-26T14:16:04.843 に答える